react-router匹配未命中

IT技术 reactjs react-router
2021-05-06 11:14:06

组件上使用MatchMiss组件有什么好处我似乎在react-router docs 中找不到任何关于此的文档react-routerRouter

我的问题来自于查看react-universally样板,更准确地说,通过查看这里:https : //github.com/ctrlplusb/react-universally

2个回答

<Match>并且<Miss>是 React Router v4 的 alpha 版本中的组件。

在测试阶段,<Match>已更名为<Route>(和它的props已经改变,因此 pattern现在是pathexactlyexact)。<Miss>组件已被完全移除。相反,您应该使用一个<Switch>语句,它只会呈现匹配的第一个<Route>(或<Redirect>)。您可以添加一个无路径组件作为<Switch>的路由的最后一个子项,并且当前面的 s 都不<Route>匹配时它将呈现

您可以查看API 文档以获取更多详细信息。

<Switch>
  <Route exact path='/' component={Home} />
  <Route path='/about' component={About} />
  // The following <Route> has no path, so it will always
  // match. This means that <NoMatch> will render when none
  // of the other <Route>s match the current location.
  <Route component={NoMatch} />
</Switch>

要添加到最后一篇文章,您会在react-router-dom. 它不再在 react-router 核心库中。

这是我发现的一种适用于react路由的模式。基本上和之前的海报一样。您需要构建包含的附加组件。

import {BrowserRouter as Router, Route, Switch} from 'react-router-dom';

{/* 在此处导入您的组件 */}

class Root extends React.Component{
    render(){
        return(
             <Router>
                     <Switch>
                        <Route exact path='/' component={App} /> )} />
                        <Route path="/some-component"  component={SomeComponent} /> 
                        <Route component={NotFound}/>
                    </Switch>
             </Router>
        );
    }
 } 
        
render(<Root/>, document.querySelector('#main'));