当前位置:首页 > 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 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。它通过动态映射 URL 到组件,实现无刷新页面切换。核心功能包括: 嵌套路由:支持多…

react路由如何刷新

react路由如何刷新

React 路由刷新方法 在 React 中,路由刷新通常涉及以下几种场景和解决方案: 强制重新加载当前页面 使用 window.location.reload() 可以强制刷新整个页面,但会丢失…

uniapp 路由插件

uniapp 路由插件

在UniApp中,路由管理通常依赖框架内置的页面跳转API,但若需要更高级的路由功能(如动态路由、拦截器等),可通过以下插件或方案实现: 路由插件推荐 uni-simple-router 专为Uni…

vue实现路由后退

vue实现路由后退

路由后退的实现方法 在Vue中实现路由后退功能,可以通过Vue Router提供的方法来完成。以下是几种常见的实现方式: 使用router.go()方法 // 在组件中调用 this.$route…

vue实现嵌套树

vue实现嵌套树

vue实现嵌套树 在Vue中实现嵌套树结构,通常需要结合递归组件和动态数据绑定。以下是几种常见的实现方法: 使用递归组件 递归组件是Vue中实现嵌套树的核心技术。通过组件调用自身,可以轻松处理任意层…

vue如何实现路由缓存

vue如何实现路由缓存

Vue 路由缓存的实现方法 在 Vue 项目中,可以通过 keep-alive 组件和路由配置实现页面缓存,避免重复渲染和提升性能。 使用 keep-alive 包裹路由视图 在 App.vue 或…