当前位置:首页 > 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 />} />

路由组合模式

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

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

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

react如何实现路由嵌套

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

相关文章

vue路由实现原理

vue路由实现原理

Vue 路由实现原理 Vue Router 是 Vue.js 官方的路由管理器,其核心原理基于前端路由的实现方式,主要包括哈希模式(Hash Mode)和历史模式(History Mode)。以下是其…

vue实现路由导航

vue实现路由导航

Vue 路由导航的实现 Vue 中实现路由导航通常使用 Vue Router 库。以下是具体实现方法: 安装 Vue Router 在项目中安装 Vue Router 依赖: npm instal…

vue实现动态路由按钮

vue实现动态路由按钮

Vue 实现动态路由按钮的方法 动态路由按钮的实现通常涉及权限控制,根据用户角色或权限动态显示或隐藏路由按钮。以下是几种常见方法: 基于路由元信息(meta)和v-if控制 在路由配置中添加权限标识…

动态路由的实现vue

动态路由的实现vue

动态路由的实现(Vue) 在Vue中实现动态路由通常涉及以下方法: 基于路由参数(params) 在路由配置中使用动态片段(以冒号开头),例如: const routes = [ { path…

vue实现点击跳转路由

vue实现点击跳转路由

vue实现点击跳转路由的方法 在Vue中实现点击跳转路由,可以通过以下几种方式完成,具体取决于项目使用的路由管理工具(如Vue Router)以及需求场景。 使用router-link组件 rout…

vue实现户籍系统路由实现

vue实现户籍系统路由实现

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