React路由使用详解

本文详细介绍了如何在React项目中使用React Router,包括创建项目、安装依赖、导入和配置路由、路由传参、子路由设置、404页面处理以及实现路由守卫。通过实例展示了如何在App.js中设置路由,以及在子组件中定义和重定向子路由,同时提到了404页面的处理策略和登录权限控制。

# 一.创建项目

打开cmd选择到需要创建的盘,我这里选择是的e盘

输入创建项目的指令

create-react-app 项目名

接下来安装项目所需要用到的插件

这里我安装的axios,qs,mokejs,并且项目文件夹需要安装:npm i react-router-dom@5.0 -S(指定5.0版本)安装指令如下

npm i axios qs react-router-dom@5.0
npm i mockjs -D

 

 这个项目需要用到

安装指令

npm i antd -S

### React路由使用详解及原理说明 React 路由是实现单页应用(SPA)的重要工具之一,它允许开发者在不刷新页面的情况下切换视图。React Router 是 React 生态中广泛使用路由库,它通过管理路由匹配、导航和渲染组件来实现这一功能。 #### 路由的基本原理 前端路由的核心在于**路径与组件的映射关系**,当路径变化时,路由系统会匹配当前路径并渲染对应的组件。在单页应用中,页面切换不会触发页面刷新,而是通过 JavaScript 动态更新页面内容。React Router 通过监听浏览器的 `history` 对象来实现路径变化的检测,并根据路径匹配对应的组件进行渲染。 React Router 提供了两种主要的路由实现方式: 1. **BrowserRouter**:基于 HTML5 的 `history` API,使用 `pushState` 和 `replaceState` 方法实现路径变化,路径看起来是正常的 URL(如 `/users/123`)。 2. **HashRouter**:基于 URL 的 hash 部分(如 `/#/users/123`),兼容性更好,但在现代浏览器中较少使用[^4]。 #### React Router 的核心组件 React Router 提供了多个核心组件来实现路由功能: - **`<Route>`**:定义路由路径与组件的映射关系。它支持三种渲染方式: - `component`:当路径匹配时,渲染指定的组件。 - `render`:内联函数方式渲染组件,适合需要传递额外 props 的场景。 - `children`:无论路径是否匹配,都会调用该函数,适用于包装组件的场景[^3]。 - **`<Link>`**:用于导航的组件,类似于 HTML 中的 `<a>` 标签,但不会触发页面刷新。 - **`<Switch>`**:用于包裹多个 `<Route>`,确保只有一个路由被渲染,提升匹配效率。路径匹配时,`<Switch>` 会按顺序查找第一个匹配的 `<Route>` 并渲染,忽略后续匹配的路径[^5]。 - **`<Redirect>`**:用于路径重定向,当当前路径匹配时,自动跳转到另一个路径。 #### 路由的配置与使用React 项目中,通常使用 `react-router-dom` 库来实现路由功能。以下是典型的路由配置示例: ```jsx import React from 'react'; import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom'; const Home = () => <h2>Home</h2>; const About = () => <h2>About</h2>; const App = () => ( <Router> <div> <nav> <ul> <li><Link to="/">Home</Link></li> <li><Link to="/about">About</Link></li> </ul> </nav> <Switch> <Route path="/" exact component={Home} /> <Route path="/about" component={About} /> </Switch> </div> </Router> ); export default App; ``` #### 路由的底层实现机制 React Router 的核心实现依赖于 `history` 对象,它负责管理浏览器的历史记录。`history` 对象提供了 `push`、`replace` 和 `goBack` 等方法,用于控制页面导航。React Router 通过监听 `history` 的变化来触发组件的重新渲染。 在 `BrowserRouter` 中,`history` 对象是基于 HTML5 的 `history` API 实现的。当用户点击 `<Link>` 组件时,React Router 会调用 `history.pushState()` 方法更新 URL,而不会导致页面刷新。随后,路由系统会匹配新的路径,并渲染对应的组件。 #### 路由的高级用法 React Router 还支持嵌套路由、动态路由路由守卫等高级功能: - **嵌套路由**:通过在父组件中定义子路由,实现多级页面结构。 - **动态路由**:使用参数(如 `:id`)捕获路径中的动态部分。 - **路由守卫**:通过 `withRouter` 高阶组件或自定义钩子函数实现权限控制。 #### 相关问题 1. React Router 如何实现动态路由匹配? 2. 如何在 React 路由中实现权限验证? 3. React Router 的 BrowserRouter 和 HashRouter 有什么区别? 4. 如何在 React 路由中实现懒加载? 5. React Router 的 Switch 组件有什么作用?
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值