在反应路由器4中,如何使用正则表达式来否定路由/路径?

chr*_*lee 9 react-router react-router-v4

假设我有一个如下所示的路由切换语句:

render () {
    <pre>
        <Switch>
            <Route path="/foo" render={render}>
            <Route path="/bar" render={renderBar}>
            <Route path="/" render={renderHome}>

            {/* How do i express everything except the home page ?*/}

            <Route render={renderFourOhFour}>
        </Switch>
    </pre>
}
Run Code Online (Sandbox Code Playgroud)

除了给出上面例子的主页之外,我如何编写一条排除所有内容的路径?我只是写一个正则表达式吗?如果是这样,我尝试了类似的东西

path={^(?!.*(home))}

与正则表达式反应路由器v4测试器:https://pshrmn.github.io/route-tester/#/

Gre*_*reg 2

您可以使用renderRoute 上的方法,该方法将位置作为 prop 传递。所以:

<Route render={({location}) => {
  return location.pathname !== '/' ? <p>Not home</p> : ''
}} />
Run Code Online (Sandbox Code Playgroud)