reactjs - React Router v6 - 如何在路由中使用@符号?

标签 reactjs react-router react-router-dom

我正在使用 react-router-dom 来管理我的路由:

<Routes>
    <Route path="/" element={<MainLayout />}>
        <Route index element={<Home />} />
        <Route path="@:profileId" element={<Profile />} />
    </Route>
<Routes>

我想在配置文件路由中使用@前缀,但错误是no routes matched location "/@username"

如何解决?

最佳答案

似乎有一个bug提交了这个问题,并且正在处理 1 或 2 个开放的拉取请求。幸运的是(或不幸的是)这些类型的路径在非布局路由中工作良好。

解决错误/问题之前的解决方法:

MainLayout 转换为包装器组件并单独包装路由组件。基本上使用 children Prop 并在 Outlet 组件之前呈现 children

MainLayout 布局组件示例:

const MainLayout = () => (
  <>
    <h1>MainLayout</h1>
    <Outlet />
  </>
);

成为

const MainLayout = ({ children }) => (
  <>
    <h1>MainLayout</h1>
    {children}
  </>
);

路线来自

<Routes>
  <Route path="/" element={<MainLayout />}>
    <Route index element={<Home />} />
    <Route path="@:profileId" element={<Profile />} />
  </Route>
</Routes>

<Router>
  <Routes>
    <Route
      path="/"
      element={
        <MainLayout>
          <Home />
        </MainLayout>
      }
    />
    <Route
      path="/@:profileId"
      element={
        <MainLayout>
          <Profile />
        </MainLayout>
      }
    />
  </Routes>
</Router>

Edit react-router-v6-how-to-use-symbol-in-route

关于reactjs - React Router v6 - 如何在路由中使用@符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71775938/

相关文章:

reactjs - 使用 Flexbox 和 React Native 在容器外部发送文本

javascript - 配置react-router v4

react-router - react 路由器 Prop `location`/ `match` 未更新为 `ConnectedRouter`

javascript - ReactJs: react 路由器 6 多种布局

javascript - 自动建议react.js组件不会更新渲染时的输入样式

javascript - 在 React 中向状态数组添加值

javascript - 如何使用map函数在react中仅返回数组中的1个项目

javascript - 将 {...this.state} 与 {this.props.children} 一起传递

javascript - react-router 在子组件中获取 this.props.location

javascript - 如何在 React 中将变量的值从一个组件传递到另一个组件