reactjs - 如何处理匹配同一路径的多个路由

标签 reactjs react-router react-router-dom

      <Routes>
        <Route path="cheese">
          <Route index element={<Home />} />
          <Route path="*" element={<Home />} />
        </Route>
        <Route path=":category">
          <Route index element={<Article />} />
          <Route path=":id">
            <Route index element={<Article />} />
            <Route path="*" element={<Article />} />
          </Route>
          <Route path="*" element={<Article />} />t
        </Route>
      </Routes>

上面,如果url的路径是/cheese/12345 ,这是匹配的第二个路由器,因此元素 <Article />已返回。

如何纠正这个问题?

我正在使用 React Router v6

最佳答案

react-router-dom@6路线始终与路径完全匹配,"/cheese/12345"与非常一般的 "/:category/:id" 完全匹配路由路径而不是特定的 "/cheese"路径。

嵌套的<Route path="*" element={<Home />} />在父项下"/cheese"路线也应该与 "/cheese/12345" 匹配.

如果您想删除 Home 的重复数据两个路由上的组件以及第一个匹配的路由 "/cheese"以及任何“子路由”/下降路径,那么它应该有一个通配符 "*"匹配器附加到路径。

示例:

<Routes>
  <Route path="/cheese/*" element={<Home />} />
  <Route path="/:category/:id" element={<Article />} />
</Routes>

如果您还想捕获任何奶酪 ID 值,则可以指定可选路径参数(仅限 RRDv6.5+)。

<Routes>
  <Route path="/cheese/:id?" element={<Home />} />
  <Route path="/:category/:id" element={<Article />} />
</Routes>

Edit how-to-handle-multiple-routes-that-match-the-same-path

关于reactjs - 如何处理匹配同一路径的多个路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75515124/

相关文章:

javascript - 箭头函数和括号 () 或 {} 或 ({}) 的使用

javascript - 每次重新渲染时都会计算 useState 和 useRef 初始值

javascript - 导出默认类时出现错误 - React

javascript - 理解 React Router 嵌套子路由

javascript - 在链接在react-router-dom上工作之前如何更改状态

reactjs - 如何从 LinkedIn oAuth2 读取 accessToken

reactjs - React Redux 和继承

javascript - 如何从 react 表中单击表行转到另一个页面?

reactjs - useNavigate 状态为空?

javascript - react-transition-group v2 和 react-router-dom v4。为什么动画改变: inner and outer components?中的数据