You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Router Dom v5嵌套路由失效 求排查解决方案

解决React Router Dom v5嵌套路由无法工作的问题

我帮你分析下问题出在哪:

你的嵌套路由配置不符合React Router v5的规则,主要有两个关键点:

  • 子路由的路径没有和父路由关联:Admin组件里的子路由用了/add-new-strategy和/这种绝对路径,但它们的父路由是/admin,所以这些路径根本匹配不到父路由下的嵌套路由。
  • 直接访问/add-new-strategy时,App组件的路由表里根本没有这个路径的配置,自然不会显示任何内容。

下面是具体的修复步骤:

1. 修改Admin组件的路由配置

我们需要用useRouteMatch钩子来获取父路由的匹配信息,然后基于这个信息拼接子路由的路径,这样既灵活又不容易出错:

import React from 'react'
// 新增导入useRouteMatch
import { Switch, Route, useRouteMatch } from 'react-router-dom'
import { AdminSideBar } from '../../AdminSideBar'
import { AddNewStrategy } from '../AddNewStrategy'

export const Admin = () => {
  // 获取父路由的匹配路径
  const { path } = useRouteMatch();

  return (
    <div className="container-fluid">
      <div className="row">
        <AdminSideBar />
        <div className="col-md-9 ml-sm-auto col-lg-10 px-md-4">
          <Switch>
            {/* 基于父路由路径拼接子路由 */}
            <Route path={`${path}/add-new-strategy`}>
              <AddNewStrategy />
            </Route>
            {/* 匹配父路由的精确路径,显示Dashboard */}
            <Route path={path} exact>
              Dashboard should show up here...
            </Route>
          </Switch>
        </div>
      </div>
    </div>
  )
}

2. 使用正确的访问路径

修改后,你需要用以下路径访问对应内容:

  • 访问Admin Dashboard:/admin
  • 访问AddNewStrategy:/admin/add-new-strategy
  • 访问Home:/(这个路径的配置是对的,只要Home组件本身没问题,应该能正常显示)

补充说明

在React Router v5里,嵌套路由的父路由一定不能加exact属性(你App组件里的/admin路由已经做到了),这样子路由才能匹配到父路由的路径前缀。用useRouteMatch能自动获取当前组件所在的父路由路径,避免硬编码前缀,后续如果父路由路径修改,子路由也会自动适配。

内容的提问来源于stack exchange,提问作者jiminssy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 19:27:29