当前位置:首页 > React

react如何实现路由嵌套

2026-01-24 13:01:37React

使用 React Router 实现嵌套路由

React Router v6 提供了简洁的嵌套路由实现方式,主要通过 <Outlet> 组件和子路由配置完成。

安装 React Router:

npm install react-router-dom

基础嵌套路由配置

在根组件中定义父路由和子路由结构:

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

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/parent" element={<Parent />}>
          <Route path="child" element={<Child />} />
        </Route>
      </Routes>
    </BrowserRouter>
  );
}

在父组件中使用 Outlet

父组件需要包含 <Outlet> 来渲染子路由内容:

import { Outlet } from 'react-router-dom';

function Parent() {
  return (
    <div>
      <h2>Parent Component</h2>
      <Outlet />
    </div>
  );
}

多级嵌套路由

可以无限层级嵌套路由:

<Route path="/dashboard" element={<Dashboard />}>
  <Route path="settings" element={<Settings />}>
    <Route path="profile" element={<Profile />} />
  </Route>
</Route>

索引路由

为父路由设置默认显示的子组件:

<Route path="/user" element={<UserLayout />}>
  <Route index element={<UserHome />} />
  <Route path="profile" element={<UserProfile />} />
</Route>

动态参数传递

嵌套路由支持动态参数:

<Route path="/products" element={<Products />}>
  <Route path=":productId" element={<ProductDetail />} />
</Route>

相对路径与绝对路径

子路由默认使用相对路径:

  • 父路由 /parent
  • 子路由 child 会组合成 /parent/child

使用绝对路径需以 / 开头:

<Route path="/child" element={<Child />} />

路由组合模式

可以将路由配置抽离为独立对象:

react如何实现路由嵌套

const routes = [
  {
    path: '/',
    element: <Layout />,
    children: [
      { index: true, element: <Home /> },
      { path: 'about', element: <About /> }
    ]
  }
];

function App() {
  return (
    <BrowserRouter>
      <Routes>
        {routes.map((route) => (
          <Route key={route.path} {...route} />
        ))}
      </Routes>
    </BrowserRouter>
  );
}

注意事项

  • 确保父路由组件包含 <Outlet> 组件
  • 使用 index 属性指定默认子路由
  • 嵌套路由的路径默认是相对于父路由的
  • React Router v6 不再支持 component 属性,统一使用 element

这种结构化的路由配置方式使得代码更易维护,尤其适合中大型应用的复杂路由需求。

标签: 嵌套路由
分享给朋友:

相关文章

vue实现户籍系统路由实现

vue实现户籍系统路由实现

Vue 实现户籍系统路由方案 户籍系统通常涉及多层级页面和权限控制,以下是基于 Vue Router 的实现方案: 路由模块配置 在 src/router/index.js 中定义路由结构: co…

vue路由实现登录

vue路由实现登录

路由守卫实现登录验证 在Vue项目中,可以通过路由守卫(Navigation Guards)来实现登录验证逻辑。路由守卫能在路由跳转前、跳转后或跳转时进行拦截处理。 安装路由依赖 npm inst…

vue实现路由管理

vue实现路由管理

Vue 路由管理实现方法 Vue 路由管理通常通过 vue-router 库实现,以下是具体实现方式: 安装 vue-router 通过 npm 或 yarn 安装最新版本: npm instal…

vue实现路由组件

vue实现路由组件

Vue 实现路由组件的方法 在 Vue 中实现路由功能通常需要结合 Vue Router 库,以下是具体实现步骤: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Router…

Vue前端路由实现

Vue前端路由实现

Vue前端路由的实现方式 Vue前端路由通常通过vue-router库实现,它是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是核心实现方法和步骤: 安装vue-router 通过…

vue 实现路由弹窗

vue 实现路由弹窗

实现路由弹窗的基本思路 在Vue中实现路由弹窗的核心是利用路由参数或查询参数控制弹窗的显示,同时保持页面URL与弹窗状态的同步。常见方法包括动态路由、嵌套路由或通过<router-view>…