当前位置: 首页 > news >正文

React 18.2中使用React Router 6.4

一、安装 React Router v6

在项目根目录下运行:

npm install react-router-dom@6.4

二、基本用法 —— 配置路由

1. 基本的路由设置(使用 BrowserRouter)

在 React 18 中,通常你会在 src/main.jsx或 src/index.js中渲染你的 App 组件,并用 <BrowserRouter>包裹整个应用。

​​src/main.jsx(或 src/index.js)​

import React from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import App from './App';const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<React.StrictMode><BrowserRouter><App /></BrowserRouter></React.StrictMode>
);

2. 在 App 组件中配置路由(使用 <Routes>和 <Route>)

src/App.jsx​

import { Routes, Route, Link } from 'react-router-dom';
import Home from './pages/Home';
import About from './pages/About';
import NotFound from './pages/NotFound';function App() {return (<div>{/* 导航栏 */}<nav><Link to="/">首页</Link> | <Link to="/about">关于</Link></nav>{/* 路由配置 */}<Routes><Route path="/" element={<Home />} /><Route path="about" element={<About />} />{/* 404 页面,匹配所有未定义的路由 */}<Route path="*" element={<NotFound />} /></Routes></div>);
}export default App;

3. 创建页面组件

在 src/pages/目录下创建对应的页面组件,例如:

​​src/pages/Home.jsx​

function Home() {return <h1>欢迎来到首页</h1>;
}export default Home;

src/pages/About.jsx​

function About() {return <h1>这是关于页面</h1>;
}export default About;

src/pages/NotFound.jsx​

function NotFound() {return <h1>404 - 页面未找到</h1>;
}export default NotFound;

三、<Outlet />

用于在​​父路由组件​​中预留一个位置,用来​​渲染其子路由匹配到的组件​。

可以把 <Outlet />想象成:一个插槽(slot),子路由的组件会“插入”到这个插槽中显示。​

或者:

父组件说:“我负责整体布局,但中间这部分内容由你来决定(即子路由),你就放在 <Outlet />这个位置吧!”

四、编程式导航(使用 useNavigate)

在函数组件中,可以使用 useNavigate进行编程式跳转:

import { useNavigate } from 'react-router-dom';function LoginButton() {const navigate = useNavigate();const handleLogin = () => {// 模拟登录逻辑...navigate('/dashboard'); // 跳转到 dashboard};return <button onClick={handleLogin}>登录</button>;
}

五、获取路由参数(如:/dashboard/:id)

// Route 配置
<Route path="users/:userId" element={<UserProfile />} />// UserProfile.jsx
import { useParams } from 'react-router-dom';function UserProfile() {const { userId } = useParams();return <h2>用户ID: {userId}</h2>;
}

注意,是:path="users/:userId",不是path="/users/:userId"。

六、结合 React.lazy 和 Suspense 实现​​按需加载(懒加载)路由

import { lazy, Suspense } from 'react';
import { Routes, Route } from 'react-router-dom';const Home = lazy(() => import('./pages/Home'));
const About = lazy(() => import('./pages/About'));function App() {return (<Suspense fallback={<div>加载中...</div>}><Routes><Route path="/" element={<Home />} /><Route path="/about" element={<About />} /></Routes></Suspense>);
}

http://www.dtcms.com/a/390562.html

相关文章:

  • 人员在岗监测技术研究:基于计算机视觉的智能监管方案
  • 实测AI Ping,一个大模型服务选型的实用工具——行业实践与深度优化策略
  • 通过QuickAPI优化金融系统API:安全快捷的数据共享最佳实践
  • 第4节 添加视频字幕到剪映(Coze扣子空间剪映小助手零基础教程)
  • 算法 --- BFS 解决 FloodFill 算法
  • telnet 一个 ip+端口却无法退出 着急
  • UVa1602/LA3224 Lattice Animals
  • Docker BuildKit 实现 Golang 编译加速
  • [x-cmd] 在 Android 的 Termux 和 iOS 的 iSH 中安装 X-CMD
  • CTFSHOW 中期测评(一)web486 - web501
  • android-USB-STM32
  • 云原生周刊:MetalBear 融资、Chaos Mesh 漏洞、Dapr 1.16 与 AI 平台新趋势
  • Android音频学习(十九)——音频HAL层简介
  • Android之音乐列表播放管理类,控制音乐播放、暂停、播放模式的切换等
  • Docker Compose从入门到实战:配置与命令全指南
  • 10.1 输入子系统模型
  • Unity手游输入笔记
  • SpringCloud-注册中心Nacos[笔记3]
  • 关于MySQL与Python后端命令交互备份
  • 大模型上下文工程实践- 上下文管理策略
  • 资产测绘工具-Nmap
  • 智能体环境配置测试
  • 如何将非结构化文档智能解析高质量数据,并按照阅读顺序还原版面?
  • 第八章 惊喜11 认知觉醒
  • 嵌入式系统学习Day37(ARM)
  • 02-Media-10-video_decoder.py 对H.264或H.265格式视频解码并在液晶屏或外接HDMI显示屏上进行显示的示例程序
  • Go面试题及详细答案120题(61-80)
  • 第二部分:VTK核心类详解(第35章:vtkDataSetAttributes数据集属性类)
  • 智能文献分析系统:让AI成为学术研究助手
  • MATLAB基于AHP-熵权法-TOPSIS的学习能力评价研究