React 18.2中采用React Router 6.4

news/2025/9/24 11:54:13/文章来源:https://www.cnblogs.com/ljbguanli/p/19108878

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(
);

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 (
{/* 导航栏 */}
首页 |
关于
{/* 路由配置 */}
} />
} />
{/* 404 页面,匹配所有未定义的路由 */}
} />
);
}
export default App;

3. 创建页面组件

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

​​src/pages/Home.jsx​

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

src/pages/About.jsx​

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

src/pages/NotFound.jsx​

function NotFound() {
return 404 - 页面未找到;
}
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 ;
}

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

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

注意,是: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 (
加载中...}>
} />
} />
);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题解:AT_abc257_h [ABC257Ex] Dice Sum 2

柿子还是得写在草稿纸上手推。 题意:很简单了,不再赘述。 做法: 首先这个权值有点抽象,我们写出来稍微化简一下。 \[\frac{1}{6^n}\sum_{x_1=1}^6\sum_{x_2=1}^6\cdots\sum_{x_n=1}^6(\sum_{i=1}^na_{i,x_i})^2 - …

ClickHouse UPDATE 机制详解 - 若

ClickHouse UPDATE 机制详解 问题现象 在使用ClickHouse进行UPDATE操作时,经常会遇到这样的现象: UPDATE ethereum.block_tasks SETstatus = pending, owner = consumer-1_1758676754070328000, assigned_at = 2025-…

Jetpack Room 从入门到精通 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站建设unohacha免费北京网站建设

导言 在 Rust 中&#xff0c;互斥器&#xff08;Mutex&#xff09;是一种用于在多个线程之间共享数据的并发原语。互斥器提供了一种安全的方式&#xff0c;允许多个线程访问共享数据&#xff0c;但每次只允许一个线程进行写操作。本篇博客将详细介绍 Rust 中互斥器的使用方法&…

不干胶网站做最好的wordpress关闭

应用场景&#xff1a;一个游戏可能会衍生出其他APP或小程序之类的软件&#xff0c;例如王者营地是王者荣耀的官方APP&#xff0c;王者营地提供资讯、赛事、社区、战绩等功能。所以游戏端会和衍生出来的软件端做一些数据互通。这里把软件端称为中台系统。 Get请求和Post请求的区…

自建个网站怎么做网站建设与管理是干什么的

Windows 下本地 Docker RAGFlow 部署指南 环境要求部署步骤1. 克隆代码仓库2. 配置 Docker 镜像加速(可选)3. 修改端口配置(可选)4. 启动服务5. 验证服务状态6. 访问服务7. 登录系统8. 配置模型8.1 使用 Ollama 本地模型8.2 使用在线 API 服务9. 开始使用10. 常见问题处理端…

ClickHouse index_granularity 详解 - 若

ClickHouse index_granularity 详解 什么是 index_granularity index_granularity 是ClickHouse中一个重要的性能配置参数,它定义了索引的粒度(granularity),即每多少个数据行会创建一个索引标记(index mark)。 …

PADS笔记

PADS笔记PCB设计流程准备--功能确定、元器件选型 元件库建立-元器件符号、器件封装 绘制原理图-根据电路功能,将元器件符号进行连接 导出网络表--将元器件的连接关系,以及元器件的信息导出一个文件,以方便导入到其他…

【2025最新教程】Claude Code国内使用_保姆级新手安装使用教程_最强AI编程工具

【2025最新教程】Claude Code国内使用_保姆级新手安装使用教程_最强AI编程工具什么是 Claude Code Claude Code 是 Anthropic 推出的一个 agentic 编码工具 (agentic coding tool),可以在命令行(terminal)中运行,或…

如何计算sequence粒度的负载均衡损失 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P13885 [蓝桥杯 2023 省 Java/Python A] 反异或 01 串

发现操作完后必定为一个回文串,并且至多消去区间一半数量的 \(1\),求最长回文串即可。

获取网站缩略图的asp代码wordpress的cms主题

防火墙在解决方案及典型项目中的应用 防火墙作为基础安全防护产品&#xff0c;在各种解决方案、业务场景中配套应用&#xff0c;本节给出各类方案资料链接方便查阅。 防火墙在华为网络解决方案中的应用 解决方案 文档 主要应用 CloudFabric云数据中心网解决方案 资料专区…

怎样的网站打开速度块北京房产网二手房出售

这一部分开始&#xff0c;我们将讲解Python中的组合数据类型&#xff0c;这里的知识十分基础而且重要&#xff0c;也已经与C语言的框架愈差愈远。 目录 序列和索引 1、概念 2、切片操作 3、序列的其他操作 列表 1、概念 2、创建与删除 3、列表的操作 4、列表生成式 …

网站开发 有哪些优化功能4p营销理论

随着电商行业的快速发展&#xff0c;个性化服务已经成为提升用户体验和增加用户粘性的关键。基于API的电商平台数据定制和推荐系统是实现这一目标的重要技术手段。 未来&#xff0c;个性化服务可能会朝以下几个方向发展&#xff1a; 更精准的用户画像&#xff1a;通过API接口…

clickhouse轻量级更新 - 若

轻量级更新(Lightweight Updates)是ClickHouse中的一个重要特性,让我详细解释一下: 什么是轻量级更新 轻量级更新是ClickHouse提供的一种高效的UPDATE机制,它允许在不重写整个数据块的情况下更新数据。 传统更新 …

西电PCB设计指南第3章学习笔记

西电PCB设计指南第3章学习笔记 三、PCB的设计与规范画图前的准备确定外轮廓(在机械层核对尺寸,安装孔位,定义PCB边界轮廓)设置layerstack(节点厚度和属性)话说我好像安装了专门算这个的软件?嘿嘿嘿:happy:那么为…

Vitrualbox、kali、metaspolitable2下载安装

太多资源看不过眼,整理了几个下载比较快、安装教程比较实用的链接。 这里下的是Virtualbox7.2.2和7.2.2版本的扩展包、kali2025.3和metasplotable2,这里直接用的最新的kali和最新稳定版本的Virtualbox版本。 注意下载…

有域名了如何建网站ftp服务器上传不了wordpress

题解&#xff1a; 我发现拉格朗日乘数法真是个好东西。。 我是不会说我数学竞赛求最值都是用这个东西的 由于我不太会打那个符号就用li代表通常偏导数中的lanmuda 。。。 这题里化简一下就可以得到 2 li * ki * ​(vi​−vi′​)* vi^2​1 然后一旦li确定 我们会发现这个三次函…

LazyLLM端到端实战:用RAG+Agent实现自动出题与学习计划的个性化学习助手智能体

1. 为什么做这个学习助手Agent? 最近,我在写一本关于Git和开源的技术书,这本书未来有个推广方向,就是面向高校作为教材使用。所以我需要在每一章结束在之后,设计若干道练习题,然后还需要为这本书编写配套的PPT以…

补充图

最小生成树(K算法和P算法)(1)K 算法(每次找最小边,判断是否存在环)TIPS:使用并查集实现合并、查询等操作。(常数级别),这里暂未使用。(2)P 算法