中级:使用 React Router 进行路由

中级:使用 react router 进行路由

路由是构建现代 web 应用程序的一个重要方面。 react router 是一个功能强大的库,使开发人员能够有效地处理 react 应用程序中的客户端路由。本指南将深入研究设置 react router 的基础知识、使用基本组件,并探索高级路由技术,例如嵌套路由、动态路由、路由参数和路由防护。

react 路由器简介

react router 允许您根据 url 管理不同组件的导航和渲染。它有助于构建具有无缝导航体验的单页应用程序 (spa)。

设置 react 路由器

要开始使用react router,请使用npm 或yarn 安装它。

npm install react-router-dom

yarn add react-router-dom

路由、交换机、链接和 navlink 组件

react router 提供了几个用于定义路由和处理导航的核心组件。

路线组件

route 组件用于定义路径并将其与组件关联。

示例:

import react from 'react';import { browserrouter as router, route } from 'react-router-dom';import home from './home';import about from './about';const app = () => {  return (                      );};export default app;

本例中,路径为 / 时渲染 home 组件,路径为 /about 时渲染 about 组件。

开关元件

switch 组件确保只渲染第一个匹配的路由。

示例:

import react from 'react';import { browserrouter as router, route, switch } from 'react-router-dom';import home from './home';import about from './about';import notfound from './notfound';const app = () => {  return (                                              );};export default app;

在此示例中,如果没有匹配的路由,则渲染 notfound 组件。

链接组件

link 组件在您的应用程序中创建导航链接,类似于锚点()标签,但无需重新加载页面。

示例:

import react from 'react';import { browserrouter as router, route, link } from 'react-router-dom';import home from './home';import about from './about';const app = () => {  return (                            );};export default app;

在此示例中,单击链接即可导航到相应的路线,而无需重新加载页面。

导航链接组件

navlink 组件与 link 组件类似,但提供了基于活动路线的附加样式功能。

示例:

import react from 'react';import { browserrouter as router, route, navlink } from 'react-router-dom';import home from './home';import about from './about';const app = () => {  return (                            );};export default app;

在此示例中,activeclassname 属性将活动类应用于与当前路由匹配的链接。

先进的路由技术

嵌套路由

嵌套路线允许您在其他路线中创建路线,从而实现导航的分层结构。

行者AI 行者AI

行者AI绘图创作,唤醒新的灵感,创造更多可能

行者AI 100 查看详情 行者AI

示例:

import react from 'react';import { browserrouter as router, route, switch, link, useroutematch } from 'react-router-dom';const topic = ({ match }) => 

requested topic id: {match.params.topicid}

;const topics = () => { let { path, url } = useroutematch(); return (

topics

  • components
  • props v. state

please select a topic.

);};const app = () => (
  • home
  • topics

home

);export default app;

在此示例中,主题组件包含嵌套路由,允许主题部分内的子导航系统。

动态路由

动态路由允许您基于动态参数创建路由,例如用户 id 或产品 id。

示例:

import react from 'react';import { browserrouter as router, route, switch, link } from 'react-router-dom';const user = ({ match }) => 

user id: {match.params.userid}

;const app = () => (
  • user 1
  • user 2
);export default app;

在此示例中,用户组件使用作为路由参数传递的用户 id 进行渲染。

路由参数

路由参数允许您从 url 捕获值并在组件中使用它们。

示例:

import react from 'react';import { browserrouter as router, route, switch, link } from 'react-router-dom';const product = ({ match }) => 

product id: {match.params.productid}

;const app = () => (
  • product 101
  • product 202
);export default app;

在本例中,product组件使用productid路由参数来显示产品id。

路由守卫和重定向

路由防护和重定向可帮助您根据条件(例如用户身份验证)控制对某些路由的访问。

保护路线

为了保护路由,您可以创建一个高阶组件(hoc),在渲染组件之前检查条件(例如,用户身份验证)。

示例:

import react from 'react';import { browserrouter as router, route, redirect } from 'react-router-dom';const isauthenticated = false;const privateroute = ({ component: component, ...rest }) => (        isauthenticated ?  :     }  />);const dashboard = () => 

dashboard

;const login = () =>

login

;const app = () => (
);export default app;

在此示例中,privateroute 组件在渲染 dashboard 组件之前检查用户是否经过身份验证。如果用户未通过身份验证,他们将被重定向到登录组件。

在 react router 中实现重定向

可以使用重定向组件来实现重定向,以编程方式将用户导航到不同的路线。

示例:

import React from 'react';import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom';const OldPage = () => 

Old Page (will redirect)

;const NewPage = () =>

New Page

;const App = () => ( );export default App;

在此示例中,访问 /old-page 会自动将用户重定向到 /new-page。

结论

理解和使用 react router 实现路由对于构建健壮的 react 应用程序至关重要。通过掌握设置路由、使用 link 和 navlink 处理导航的基础知识,以及实现嵌套路由、动态路由、路由参数和路由防护等高级技术,您可以在应用程序中创建无缝且安全的导航体验。随着您继续发展您的技能,这些概念将成为您使用 react 构建复杂的单页应用程序的能力的基础。

以上就是中级:使用 React Router 进行路由的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/470230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CentOS Stream 9通过配置sshd_config中AllowUsers实现SSH访问控制
上一篇 2025年11月8日 07:14:43
联发科天玑9300 AI得分公布:2109分,位居第一
下一篇 2025年11月8日 07:14:46

相关推荐

  • python括号怎么打

    在 Python 中输入括号有三种方法:使用键盘:Shift + 数字键使用字符映射表:按住 Alt/Option 键并输入 Unicode 字符代码使用 ASCII 码:使用圆括号、方括号和大括号的 ASCII 码 在 Python 中输入括号 在 Python 中,括号是用于分组表达式、定义代码…

    2025年12月13日
    000
  • python怎么引入内置函数

    要引入 Python 内置函数,只需在代码中使用函数名即可。常见的内置函数包括:print():打印输出len():返回对象长度input():获取用户输入int():将字符串转换为整数float():将字符串转换为浮点数str():将对象转换为字符串list():将对象转换为列表tuple():将…

    2025年12月13日
    000
  • python怎么输出数据

    Python 提供了多种输出数据的方法:1. 使用 print() 函数;2. 使用 f-string;3. 使用内建的输出函数(str()、repr()、int()、float()、bool());4. 自定义输出函数;5. 使用文件对象。 Python 中如何输出数据 输出数据是 Python …

    2025年12月13日
    000
  • python进程池怎么做

    进程池是一种Python并行处理机制,通过创建子进程来执行任务,实现并发和CPU并行化。它可以方便地创建、管理和获取子进程任务结果。优点包括并发任务处理、CPU并行化和资源管理,缺点则包括内存开销、进程启动开销、通讯开销和共享数据问题。 Python进程池详解 进程池是什么? 进程池是Python中…

    2025年12月13日
    000
  • python怎么复制文件

    在 Python 中,有三种方法可以复制文件:使用 shutil.copyfile() 函数,以目标路径复制源文件。使用 shutil.copy() 函数,递归复制文件或目录。使用 open() 和 write() 函数手动复制文件,但效率较低。 如何用 Python 复制文件 在 Python 中…

    2025年12月13日
    000
  • python归并排序的递归合并应该怎么写

    Python 的归并排序使用递归合并函数将有序的子列表合并为一个有序的列表。该函数使用索引逐一比较子列表中的元素,并将较小的元素添加到合并后的列表中,直到两个子列表都遍历完,最终返回合并后的有序列表。 Python 归并排序中的递归合并 Python 归并排序是一种分治排序算法,它将一个列表拆分成更…

    2025年12月13日
    000
  • python的不等于怎么写

    Python中的不等于运算符为!=,它比较两个值的相等性,并返回True(不相等)或False(相等)。 Python 中的不等于运算符 Python 中的不等于运算符是 !=,用于比较两个值是否不相等。 语法: x != y 其中,x 和 y 是两个表达式,可以是数字、字符串、列表等任何数据类型。…

    2025年12月13日
    000
  • python配置文件怎么读取

    在 Python 中读取配置文件时有两种常见方法:使用 configparser 模块进行简单读取和写入 INI 配置文件。使用 iniparse 模块进行更高级的 INI 配置文件解析。 Python 配置文件读取 在 Python 中读取配置文件是很常见的,它可以帮助你存储应用程序的设置和其他信…

    2025年12月13日
    000
  • python枚举怎么用

    Python 中枚举用于定义命名常量,提高代码可读性。可以通过 enum.Enum 基类创建枚举类,并在其中定义常量,每个常量对应一个枚举值。枚举成员具有 name(名称)和 value(底层数值)属性。 Python 枚举的用法 Python 中的枚举是一种用来定义一组命名常量的特殊数据类型。它可…

    2025年12月13日
    000
  • python的库怎么查看

    要查看已安装的 Python 库,可以使用以下方法:使用 Python 解释器:import sys;print(sys.modules)使用 pip:pip list使用 conda:conda list使用第三方工具,如 PyPI Package Index、Package Index 或 Py…

    2025年12月13日
    000
  • python字符串怎么转化成不带转义

    在 Python 中,可以使用以下四种方法将包含转义符的字符串转换为不带转义符的字符串:1. 使用 str.replace();2. 使用 str.decode() 和 codecs.decode();3. 使用正则表达式;4. 使用 ast.literal_eval()。 如何将 Python 字…

    2025年12月13日
    000
  • python怎么把列表输出

    Python 提供了以下 6 种输出列表的方法:print():直接输出列表。str():将列表转换为字符串再输出。join():使用指定分隔符将列表元素连接成字符串输出。repr():输出列表的 Python表达式。json.dumps():将列表转换成 JSON 字符串输出。list():将字符…

    2025年12月13日
    100
  • python编码怎么设置utf8

    在 Python 代码文件中设置 UTF-8 编码:文件开头添加注释:” # — coding: utf-8 — “保存文件时选择 UTF-8 编码。这将确保 Python 解释器将该文件解释为 UTF-8 编码。 如何设置 Python 代码文件的 …

    2025年12月13日
    000
  • python爬虫怎么获取ajax

    有三种方法可以获取 AJAX 数据:解析响应文本:使用 requests 库发送请求并解析响应文本。使用 Selenium:自动化浏览器并执行 AJAX 请求。使用 Node.js 代理:在爬虫和网站之间转发请求并拦截 AJAX 请求。 如何使用 Python 爬虫获取 AJAX 数据 直接响应解析…

    2025年12月13日
    100
  • python怎么注释多行代码

    在 Python 中,注释多行代码有两种方法:三引号字符串(使用三个引号括起文本);块注释(以 # 开头,换行)。 如何使用 Python 注释多行代码 在 Python 中,有两种方法可以注释多行代码。 1. 三引号字符串 使用三个单引号或双引号 ”’ 或 “”” 括起注释文本,如下所示: 立即…

    2025年12月13日
    000
  • python需要输入参数的程序怎么调试

    调试带参数的 Python 程序的方法有三种:使用命令行参数、使用 sys.argv 或使用第三方库。要使用命令行参数,请使用 argparse 模块添加参数定义,解析参数并存储它们;要使用 sys.argv,请直接访问命令行参数列表;第三方库(如 click)提供了更方便的参数解析。调试步骤包括设…

    2025年12月13日
    000
  • python怎么引入库

    Python 中导入库的方法是使用 import 语句或 from 语句,具体使用方法如下:import 库名:导入整个库。from 库名 import 模块名:从库中导入特定模块。 如何在 Python 中导入库 在 Python 中导入库是一种非常常见且重要的操作。库可以为 Python 开发人…

    2025年12月13日
    000
  • python时间中断函数怎么写

    有两种 Python 时间中断函数:time.sleep():暂停程序执行指定时间(秒);threading.Timer():在指定时间间隔后调用函数。 Python 时间中断函数 Python 中存在多种时间中断函数,用于在指定的间隔后暂停或停止一个正在运行的程序。本文将介绍两种常用的函数: 1.…

    2025年12月13日
    000
  • python怎么添加注释

    Python 注释是向代码添加说明性文本,可用单行注释(以 # 开头)或多行注释(以 “”” 或 ”’ 开头)实现。单行注释适用于短注释,而多行注释用于描述函数、类或模块的功能。最佳实践包括保持注释描述性、简洁、并遵守一致的风格。 如何添加…

    2025年12月13日
    000
  • python冒泡怎么排序

    冒泡排序是一种通过比较相邻元素并交换它们的位置来排序列表的算法。其排序过程包括:从列表的第一个元素开始,依次比较相邻元素。如果当前元素大于下一个元素,则交换这两个元素的位置。继续比较列表中剩余的元素,直到最后一个元素。重复前述步骤,直到列表中的所有元素都被排序。该算法的时间复杂度为 O(n^2),对…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信