javascript - React Router 无法解析参数路由

标签 javascript reactjs react-router-dom

我正在使用react-router-dom V6

<Router>
  <Routes>
    <Route path="/">
      <Route path="example" element={<h1>Example</h1>}>
        <Route path=":id" element={<p>cool</p>} />
      </Route>
    </Route>
  </Routes>
</Router>

"http://localhost:3000/example " 渲染示例到目前为止效果很好,但是 “https://localhost:3000/example/34” 不渲染任何内容。

问题是什么?

请说明原因以及如何解决此问题。

最佳答案

嵌套路由时,父路由需要渲染一个 Outlet 组件,以便嵌套路由将其 element 内容渲染到其中。当没有提供 element 属性时,Route 组件默认渲染一个 Outlet,所以这就是为什么 "/example" 路线有效。

示例:

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

...

<Router>
  <Routes>
    <Route path="/">
      <Route
        path="example"
        element={(
          <>
            <h1>Example</h1>
            <Outlet />
          </>
        )}
      >
        <Route path=":id" element={<p>cool</p>} />
      </Route>
    </Route>
  </Routes>
</Router>

如果您不想将“Example”组件与其子组件同时渲染,请在其自己的索引路由上单独渲染它。

示例:

<Router>
  <Routes>
    <Route path="/">
      <Route path="example">
        <Route index element={<h1>Example</h1>} />
        <Route path=":id" element={<p>cool</p>} />
      </Route>
    </Route>
  </Routes>
</Router>

更多详情请参见:

关于javascript - React Router 无法解析参数路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73659686/

相关文章:

javascript - 无法将脚本放入子主题中

javascript - 如何使用对象作为 JavaScript 中的键在循环中加载哈希?

javascript - 如何强制重新安装 React 组件?

react-router - 如何在 react-router v5 中监听查询参数更改事件

javascript - React Router v4 - 切换组件时保持滚动位置

javascript - 如果我们单击 slider ,jquery UI Slider 自定义控件音量图像不会改变

javascript - 访问新窗口 - cypress.io

javascript - MapView 组件中状态和初始区域的 React Native 问题

reactjs - 如何在 React 钩子(Hook)中自动停止 setInterval?

javascript - React Route - 从 JSON 对象中的字符串渲染路由中的组件