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

React Router 6.9.0路由数组渲染问题:子路由无法显示求助

React Router 6.9.0 嵌套路由修复方案

问题出在React Router 6和5的路由机制差异上,以下是针对性的修改步骤:

1. 修正路由配置文件(routes.js)

React Router 6中嵌套路由需要使用相对路径,同时移除不再支持的exact属性:

export const routes = [
  {
    path: "", // 对应父路由的 ui/forms/new 或 ui/forms/:id 路径
    main: () => import('./FormLayoutEditor'),
    permission: 'menu_admin'
  },
  {
    path: "widget/:key", // 对应父路由下的子路径,即 ui/forms/:id/widget/:key
    main: () => import('./FormWrapperEditor'),
    permission: 'menu_admin'
  }
];

2. 调整FormEditor的子路由渲染逻辑

React Router 6不再支持Route组件的lazy属性,需改用React内置的lazy函数配合Suspense实现懒加载,同时用element属性指定渲染组件:

import { Routes, Route } from 'react-router-dom';
import { Suspense, lazy } from 'react';
import { routes } from './routes';

// 可选:定义加载时的占位组件
const Loading = () => <div>加载中...</div>;

return (
  <HeaderLessLayout>
    <Suspense fallback={<Loading />}>
      <Routes>
        {formData && routes.map((r, key) => {
          const Component = lazy(r.main);
          return (
            <Route 
              key={key} 
              path={r.path} 
              element={<Component />} 
            />
          );
        })}
      </Routes>
    </Suspense>
  </HeaderLessLayout>
);

3. 优化父路由配置

React Router 6的Route组件没有replace属性,直接移除即可:

return (
  <BrowserRouter>
    <Routes>
      <Route
        path="ui/forms/new/*"
        element={
          <I18nProvider i18n={i18n}>
            <FormEditor />
          </I18nProvider>
        }
      />
      <Route
        path="ui/forms/:id/*"
        element={
          <I18nProvider i18n={i18n}>
            <FormEditor />
          </I18nProvider>
        }
      />
    </Routes>
  </BrowserRouter>
);

核心差异说明

  • 相对路径:子路由路径需基于父路由路径编写,父路由末尾的/*用于匹配所有子路由
  • 懒加载:Route组件不再支持lazy属性,必须通过React.lazy + Suspense实现
  • 精确匹配:React Router 6默认开启精确匹配,嵌套路由依赖父路由的/*通配符实现层级匹配,无需设置exact

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:42:43