react路由嵌套时,子路由无法显示

在子组件中实现路由嵌套时,控制台报错:<Routes> 您在 <Route path=“/”> 下呈现后代(或称为“useRoutes()”),但父路由路径没有尾随“*”。这意味着,如果导航得更深,父路将不再匹配,因此子路由将永远不会呈现。请将父<Route path=“/”>更改为<Route path=“*”>。

报错原因:在router v6中,所有路由路径始终是完全匹配,不需要像router v4/5一样匹配路径前缀

解决方法:

1、如果路由配置在主组件(一般是<App/>)中,则为父路径指定*通配符

2、如果路由配置在子组件(<App/>下渲染的组件)中,将有关父组件的路由配置删除,只留下需要渲染的子组件的路由配置

react实现子路由嵌套,并渲染页面的方法:

第一步:在<App/>组件中配置相关路由(<App/>为该react项目渲染的主组件)

<Route path="/user" element={<User />}>
       <Route path="center" element={<Center />} />
       <Route path="many" element={<Many />} />
</Route>

第二步:添加点击跳转事件,key对应子页面路径

const items1 = [
  {
    label: "用户管理",
    key: "/user/center",
    children: [
      { label: "用户管理", key: '/user/center' },
      { label: "新增用户", key: '/user/many' },
    ],
  },
]

第三步:设置点击事件,使用useNavigate实现点击跳转

  const navigate = useNavigate();

  const handleMenuClick = (key) => {
    navigate(key);
  };
  <Menu
        items={items1}
        onClick={({ key }) => handleMenuClick(key)}
          />

第四步:在<User/>组件下配置子路由(<User/>组件为<App/>下渲染的子组件)

            <Routes>
                <Route path="center" element={<Center />} />
                <Route path="many" element={<Many />} />
            </Routes>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值