React-Router路由

1.React Router的基本使用

安装:安装时,选择react-router-dom,react-router会包含一些react-native的内容,web开发并不需要;

npm install react-router-dom

路径模式
  • BrowserRouter使用history模式;
  • HashRouter 使用hash模式;
路由映射配置
Routes:包裹所有的Route,在其中匹配一个路由;
Route:Route用于路径的匹配;
  • path属性:用于设置匹配到的路径;
  • element 属性:设置匹配到路径后,渲染的组件;
路由配置和跳转
Link和NavLink:
  • 通常路径的跳转是使用Link组件,最终会被渲染成a元素;
  • NavLink是在Link基础之上增加了一些样式属性;
  • to属性:Link中最重要的属性,用于设置跳转到的路径;
Navigate导航
Navigate 用于路由的重定向,当这个组件出现时,就会执行跳转到对应的to路径中;
Navigate是由react-router-dom提供的组件, 可直接调用;
路由参数传递
  • 动态路由的方式;
  • search传递参数;
动态路由的概念指的是路由中的路径并不会固定:
  • 比如/detail的path对应一个组件Detail;
  • 将path在Route匹配时写成/detail/:id,那么 /detail/abc、/detail/123都可以匹配到该Route,并且进行显示,该匹配规则及称之为动态路由;
动态路由参数获取通过 useParams函数获取,useParams由react-router-dom库提供的api;
search参数获取:

通过useSearchParams函数获取,useSearchParams由react-router-dom库提供的api,该函数返回一个entries对象,通过Object.fromEntries转换成普通对象即可;

路由的配置文件
目前我们所有的路由定义都是直接使用Route组件,并且添加属性来完成的,但是这样的方式会让路由变得非常混乱,早期的时候, Router 并且没有提供相关的 API ,我们需要借助于 react-router-config完成,在Router6.x中,react-router-dom库 提供了useRoutesAPI可以集中路由配置到一个文件中管理。

router.js

import { Navigate } from "react-router-dom"
import Home from "../pages/Home"
import HomeRecommend from "../pages/HomeRecommend"
import HomeRanking from "../pages/HomeRanking"
// import Category from "../pages/Category"
// import About from "../pages/About"
import React from "react"const Category = React.lazy(() => import('../pages/Category'))
const About = React.lazy(() => import('../pages/About'))const Routes = [{path: '/',element: <Navigate to='/home' />},{path: '/home',element: <Home/>,children: [{path: '/home/recommend',element: <HomeRecommend />},{path: '/home/ranking',element: <HomeRanking />},{path: '/home/category',element: <Category />}]},{path: '/about',element: <About />}
]export default Routes

组件中使用

 如果我们对某些组件进行了异步加载(懒加载),那么需要使用Suspense进行包裹: 

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

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

相关文章

深度学习 | Pytorch深度学习实践

一、overview 基于pytorch的深度学习的四个步骤基本如下&#xff1a; 二、线性模型 Linear Model 基本概念 数据集分为测试集和训练集&#xff08;训练集、开发集&#xff09;训练集&#xff08;x&#xff0c;y&#xff09;测试集只给&#xff08;x&#xff09;过拟合&#xf…

TIA博途中如何在网络视图中显示完整的设备名称?

TIA博途中如何在网络视图中显示完整的设备名称&#xff1f; 如下图所示&#xff0c;在网络视图中&#xff0c;当设备名称较长时&#xff0c;不能直接看到完整的设备名称&#xff0c;只有当鼠标悬停在该设备上时&#xff0c;才能看到完整的设备名称&#xff0c; 那么如何设置&am…

python安装gdal

下载whl https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal 安装 pip install GDAL-3.1.4-cp36-cp36m-win_amd64.whl

power point导出pdf保留字体

在 slides 中用到非自带的字体&#xff0c;如 [1]&#xff0c;想导出成 pdf 文件&#xff08;因为导出成图&#xff0c;如 png&#xff0c;放大会蒙&#xff09;&#xff0c;并在别人电脑里也保留字体。除了让别人也装上相应字体&#xff0c;可以&#xff1a; 参考 [2]&#x…

25台兰博基尼跑车赛道巡游!泡泡玛特MOLLY攒的局就是这么拉风

入秋以来气温逐渐转冷&#xff0c;但泡泡玛特的市场活动却持续升温&#xff1a;国内首个潮玩行业沉浸式IP主题乐园泡泡玛特城市乐园正式开园&#xff1b;2023PTS上海国际潮流玩具展&#xff1b;入驻美国第二大商场、布里斯班再拓新店等海外布局步伐不停……将广大消费者的身心带…

TSINGSEE烟火识别算法的技术原理是什么?如何应用在视频监控中?

AI烟火识别算法是基于深度学习技术的一种视觉识别算法&#xff0c;主要用于在视频监控场景中自动检测和识别烟雾、火焰的行为。该技术基于深度学习神经网络技术&#xff0c;可以动态识别烟雾和火焰从有到无、从小到大、从大到小、从小烟到浓烟的状态转换过程。 1、技术原理 1…

Hadoop3教程(十二):MapReduce中Shuffle机制的概述

文章目录 &#xff08;95&#xff09; Shuffle机制什么是shuffle&#xff1f;Map阶段Reduce阶段 参考文献 &#xff08;95&#xff09; Shuffle机制 面试的重点 什么是shuffle&#xff1f; Map方法之后&#xff0c;Reduce方法之前的这段数据处理过程&#xff0c;就叫做shuff…

vue-cli脚手架创建项目时报错Error: command failed: npm install --loglevel error

项目背景 环境&#xff1a;vue-cli 5.x 在工程文件中&#xff0c;后端模块wms已经创建完成&#xff0c;现在想新建一个名为vue-web的前端模块 执行命令vue create vue-web时&#xff0c; 报错Error: command failed: npm install --loglevel error 问题分析及解决 排查过程…

Talk | 阿里巴巴算法专家王潇斌:开箱即用的文本理解大模型

本期为TechBeat人工智能社区第538期线上Talk&#xff01; 北京时间10月18日(周三)20:00阿里巴巴算法专家—王潇斌的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “开箱即用的文本理解大模型”&#xff0c;介绍了他们提出的SeqGPT以及EcomGPT两个文…

微信小程序之自定义组件(OA项目个人主页及投票)

前言 本期为大家带来微信小程序自定义组件及OA项目的个人主页布局和投票 一.自定义组件 1.学习官网 自定义组件 / 介绍 (qq.com) 2.如何自定义组件 2.1 创建目录 在根目录下依次创建components/tabs&#xff0c;然后在tabs中新建Component 创建好后会自动为我们生成对应的文…

打卡go学习第一天

8.1 下面展示一些 代码。 package mainimport ("fmt""net""os""time" )type Clock struct {Name stringAddr string &#xff5d; func main() {clocks : []Clock{{Name: "New York", Addr: "localhost:8000"…

Oracle数据库 ORA-28001: the password has expired解决方法

今天在用dbvisualizer登录数据库的时候&#xff0c;报了the password has expired的错误&#xff0c;于是上网查了一下原因&#xff0c;是因为数据库密码过期了&#xff0c;因为默认的是180天。 解决方法&#xff1a; 1&#xff09;用系统用户登录 #在cmd终端输入&#xff1…