reactjs - React 路由器忽略 URL 中的斜杠

标签 reactjs routes react-router react-router-dom

React 路由器为路由 /foo/bar 渲染 FooFooBar

ReactDOM.render(
(<BrowserRouter> 
        <div>
                <Route path="/foo/bar" component={FooBar}/>
                <Route path="/foo" component={Foo}/>
        </div>
</BrowserRouter>)
, document.getElementById("root"));

到底为什么它会运行两条路线?我认为这太疯狂了。

我将如何使用嵌套路由(如果我想要执行多个嵌套路由而不使用:/params?例如/foo/bar/baz/whatever ?)。

如果不提及我使用的是哪个版本,这个问题的答案是否有意义?

最佳答案

使用 React Router V4,您可以使用 Switch 组件来确保仅渲染第一个匹配的路由:

import { Switch, Route } from 'react-router-dom'

...

<Switch>
  <Route path="/foo/bar" component={FooBar}/>
  <Route path="/foo" component={Foo}/>
</Switch>

您还可以使用 exact 属性来确保 /foo 路由仅在网址为 /foo 而不是 /foo 时匹配>/foo/bar:

<Route path="/foo" exact component={Foo}/>
<Route path="/foo/bar" component={FooBar}/>

关于reactjs - React 路由器忽略 URL 中的斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47664093/

相关文章:

node.js - 为什么我的 Express 服务器响应仅在 SSR 期间被截断?

reactjs - 如何在 Gatsby 中查询特定语言的 markdown 文件?

azure - 我可以在 Azure 静态 Web 应用程序中使用通配符进行重定向吗?

javascript - 多个 3 列布局的目标中间 child

javascript - 如何更改列表元素的类名

c - 如何在 Linux 中使用 c-api 查找 VRF 设备的路由表 ID

ruby-on-rails - Ruby on Rails - 路由 - 跳出 URL

reactjs - 类型错误 : date[ ("get" + method)] is not a function in React-big-calendar

javascript - 如何跳过历史页面(使用react-router/js)

performance - React - 延迟繁重的子组件渲染