当前位置:首页 > React

react如何嵌套路由

2026-01-24 14:12:35React

嵌套路由的实现方法

在React中,嵌套路由通常通过react-router-dom库实现。嵌套路由允许在父路由组件内部定义子路由,形成层级结构。

安装react-router-dom

确保项目中已安装react-router-dom

npm install react-router-dom

基本嵌套路由配置

使用RoutesRoute组件定义嵌套路由结构。父路由组件通过Outlet渲染子路由内容。

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

function Parent() {
  return (
    <div>
      <h2>Parent Component</h2>
      <Outlet />  {/* 子路由内容将在此处渲染 */}
    </div>
  );
}

function Child() {
  return <h3>Child Component</h3>;
}

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

动态嵌套路由

嵌套路由支持动态路径参数,通过useParams获取参数值。

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

function UserProfile() {
  const { userId } = useParams();
  return <div>User ID: {userId}</div>;
}

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/users">
          <Route path=":userId" element={<UserProfile />} />
        </Route>
      </Routes>
    </BrowserRouter>
  );
}

嵌套路由的索引路由

索引路由指定父路由路径下的默认子路由,使用index属性。

function Dashboard() {
  return <h3>Dashboard Home</h3>;
}

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/dashboard" element={<Parent />}>
          <Route index element={<Dashboard />} />
          <Route path="settings" element={<Settings />} />
        </Route>
      </Routes>
    </BrowserRouter>
  );
}

嵌套路由的布局模式

通过布局组件包裹嵌套路由,实现共享的UI结构。

function Layout() {
  return (
    <div>
      <nav>Navigation Bar</nav>
      <Outlet />
    </div>
  );
}

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route element={<Layout />}>
          <Route path="/" element={<Home />} />
          <Route path="/about" element={<About />} />
        </Route>
      </Routes>
    </BrowserRouter>
  );
}

嵌套路由的编程式导航

使用useNavigate钩子实现编程式导航。

react如何嵌套路由

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

function Home() {
  const navigate = useNavigate();
  return (
    <button onClick={() => navigate('/parent/child')}>
      Go to Child
    </button>
  );
}

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

相关文章

vue路由实现滑动

vue路由实现滑动

路由切换滑动动画实现 在Vue中实现路由切换时的滑动动画,可以通过Vue的过渡系统结合CSS动画或第三方库完成。以下是几种常见方法: 使用Vue过渡 + CSS动画 包裹<router-vie…

vue路由实现介绍

vue路由实现介绍

Vue 路由基础概念 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。它通过动态映射 URL 到组件,实现无刷新页面切换。核心功能包括: 嵌套路由:支持多…

react路由如何配置

react路由如何配置

React 路由配置方法 安装 React Router 使用 npm 或 yarn 安装 React Router 的 DOM 版本: npm install react-router-dom #…

vue路由实现流程

vue路由实现流程

Vue 路由实现流程 安装 Vue Router 通过 npm 或 yarn 安装 Vue Router 依赖包: npm install vue-router 或 yarn add vue-ro…

vue实现多级路由

vue实现多级路由

Vue 实现多级路由的方法 使用嵌套路由 在 Vue Router 中,可以通过 children 属性实现多级路由嵌套。在路由配置中,父路由的 children 数组包含子路由配置,子路由的路径会自…

vue怎么实现路由缓存

vue怎么实现路由缓存

Vue 实现路由缓存的方法 使用 <keep-alive> 组件 在 Vue 中,可以通过 <keep-alive> 组件实现路由缓存。该组件会缓存不活动的组件实例,避免重复渲…