React之路由

React之路由

背景: react: 18.2.0 路由:react-router-dom: 6.14.2

1、路由表配置

src下新建router/index.ts

import React, { lazy } from 'react'
import { Navigate } from 'react-router-dom'
import Layout from '@/layout/Index' 
import { JSX } from 'react/jsx-runtime'// 路由懒加载
const Home = lazy(() => import('@/views/Home'))
const About = lazy(() => import('@/views/About'))
const Error404 = lazy(() => import('@/views/Error/404'))// 封装加载异步组件
const withLoadingComponent = (comp: JSX.Element) => (<React.Suspense fallback={<div>loading</div>}>{comp}</React.Suspense>
)// 1 根据接口数据动态生成路由对象
// 2 根据路由对象 动态生成菜单列表
const routes = [{path: '/',element: <Navigate to="/home" />},{path: '/',element: <Layout />,children: [{path: '/home',element: withLoadingComponent(<Home />),meta: {title: '首页'}},{path: '/about',element: withLoadingComponent(<About />),meta: {title: '关于作者'}}]},// 用户随便输入一个未处理的路径,重定向到404{path: '*',element: withLoadingComponent(<Error404 />)}
]export default routes

注意:

  • 路由重定向需要使用 Navigate 组件对象,如: <Navigate to="/home" />
  • 路由懒加载需要使用react中的lazy 函数,如: lazy(() => import('@/views/Home')), 不过,所有懒加载的组件都必须被自定义加载loading高级组件包裹
// 自定义加载动画高级组件
const withLoadingComponent = (comp: JSX.Element) => (<React.Suspense fallback={<div>loading</div>}>{comp}</React.Suspense>
)
// 包裹懒加载组件
element: withLoadingComponent(<Home />),

2、在项目入口文件注入router

import ReactDOM from 'react-dom/client'
// UI css
// antd v5 自带的重置样式
import 'antd/dist/reset.css'
// 导入路由模式
import { BrowserRouter } from 'react-router-dom'
import App from './App.tsx'ReactDOM.createRoot(document.getElementById('root')!).render(<BrowserRouter><App /></BrowserRouter>
)

3、在跟组件App.tsx下面,使用useRoutes构建路由占位符

// 路由配置对象
import routes from './router' // .router/index.tsx
import { useRoutes } from 'react-router-dom'
function App() {// 模拟路由中的<Outlet /> 组件const outlet = useRoutes(routes)return <>{outlet}</>
}export default App

4、编程式路由导航

import { useNavigate } from 'react-router-dom'
const navigate = useNavigate()
navigate(‘路径’)

5、组件路由导航

import { Link } from 'react-router-dom'
<Link to={'路径'}>Back Home</Link>

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

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

相关文章

#P1007. [NOIP2007提高组] 矩阵取数游戏

题目描述 帅帅经常跟同学玩一个矩阵取数游戏&#xff1a;对于一个给定的 n \times mnm 的矩阵&#xff0c;矩阵中的每个元素 a_{i,j}ai,j​ 均为非负整数。游戏规则如下&#xff1a; 每次取数时须从每行各取走一个元素&#xff0c;共 nn 个。经过 mm 次后取完矩阵内所有元素&…

stm32内存杂记

从上图中可以看出SRAM空间用来存放&#xff1a;1.各个文件中声明和定义的全局变量、静态数据和常量&#xff1b;2.未初始化的全局变量&#xff1b;3.HEAP区&#xff1b;4.STACK区 这是在.map文件中&#xff0c;双击工程target打开 堆栈是处于以0x2000xx地址处的 EQU伪代码&…

学C的第三十一天【通讯录的实现】

相关代码gitee自取&#xff1a;C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 学C的第三十天【自定义类型&#xff1a;结构体、枚举、联合】_高高的胖子的博客-CSDN博客 通讯录需求&#xff1a; 实现一个通讯录&#xff0c; 通讯录中存放保存人的信息&#xff1…

【ChatGPT】相关解读

ChatGPT 背后的“功臣”——RLHF 技术详解 Meta 发布开源可商用模型 Llama 2&#xff0c;实际体验效果如何&#xff1f; Llama 2线上试用地址&#xff1a;replicate.com/a16z-infr…

华为鸿蒙4本周发布:官方海报大有玄机!告别“人工智障”!

一年一度的华为开发者大会2023(HDC.Together)将于8月4日至8月6日在东莞松山湖举办。相比去年&#xff0c;今年的华为开发者大会足足提前了三个月&#xff0c;而本次大会主角之一无疑是全新国产操作系统鸿蒙4&#xff08;HarmonyOS 4&#xff09;。 官方之前用了三个词来形容鸿蒙…

C#文件操作从入门到精通(1)——INI文件操作

点击这里:微软官方文档查看writePrivateProfileString函数定义 常见错误: 1、中文路径写入失败,为啥? 2、文件不是全路径,只有文件名也会写入失败: 3、GetLastError怎么使用? GetLastError错误代码含义: (0)-操作成功完成。 (1)-功能错误。 (2)- 系统找不到指定的文件…

3个命令定位CPU飙高

top 指令找出消耗CPU最厉害的那个进程的pid top -H -p 进程pid 找出耗用CPU资源最多的线程pid printf ‘0x%x\n’ 线程pid 将线程pid转换为16进制 结合jstack 找出哪个代码有问题 jstack 进程pid | grep 16进制的线程pid -A 多少行日志 jstack 进程pid | grep 16进制的线程…

C语言指针进阶-1

本篇文章带来 1. 字符指针 2. 数组指针 3. 指针数组的相关知识详细讲解&#xff01; 如果您觉得文章不错&#xff0c;期待你的一键三连哦&#xff0c;你的鼓励是我创作的动力之源&#xff0c;让我们一起加油&#xff0c;一起奔跑&#xff0c;让我们顶峰相见&#xff01;&#…

04 http连接处理(上)

基础知识&#xff1a;epoll、http报文格式、状态码和有限状态机 代码&#xff1a;对服务端处理http请求的全部流程进行简要介绍&#xff0c;然后结合代码对http类及请求接收进行详细分析。 epoll epoll_create函数 #include <sys/epoll.h> int epoll_create(int size)…

【业务功能篇55】Springboot+easyPOI 导入导出

Apache POI是Apache软件基金会的开源项目&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI 代码实现复杂&#xff0c;学习成本较高。 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出…

C#匿名函数,lambda表达式笔记

一.匿名函数 匿名函数是一种定义时不起函数名的技术&#xff0c;因此无法直接调用&#xff0c;通常用来赋值给委托后被委托调用。在匿名方法中您不需要指定返回类型&#xff0c;它是从方法主体内的 return 语句推断的 它的语法形式为&#xff1a;delegate (input-parameters)…

【计算机网络】408统考2014年题36

题目描述 【2014年题36】主机甲与主机乙之间使用后退N帧(GBN)协议传输数据&#xff0c;甲的发送窗口尺寸为1000&#xff0c;数据帧长为1000字节&#xff0c;信道带宽为100Mbps&#xff0c;乙每收到一个数据帧就立即利用一个短帧&#xff08;忽略其传输延迟&#xff09;进行确认…

C++相关容器篇章

内容链接vector点击链接stack和queue的函数用法点击链接优先队列priority_queue

Banana Pi BPI-KVM – 基于 Rockchip RK3568 SoC 的 KVM over IP 解决方案

Banana Pi 已经开始开发基于 Rockchip RK3568 SoC 的 BPI-KVM 盒&#xff0c;但它不是迷你 PC&#xff0c;而是 KVM over IP 解决方案&#xff0c;旨在远程控制另一台计算机或设备&#xff0c;就像您在现场一样&#xff0c;例如能够打开和关闭连接的设备、访问 BIOS 等。 商业…

eda、gnm、anm究竟是个啥?

安装prody pip install prody -i https://pypi.tuna.tsinghua.edu.cn/simpleeda、anm、gnm eda(essential dynamics analysis) 另一个名字PCA(Principal Component Analysis) 或 NMA(Normal Mode Analysis)。 eda分析可以帮助人们理解生物大分子基本的运动模式和构象变化。…

面试典中典之线程池的七大参数

文章目录 一、七大元素解释1.corePoolSize&#xff08;核心线程数&#xff09;&#xff1a;2.maximumPoolSize&#xff08;最大线程数&#xff09;&#xff1a;3.keepAliveTime&#xff08;线程空闲时间&#xff09;&#xff1a;4.unit&#xff08;时间单位&#xff09;&#x…

Elasticsearch:使用 ELSER 释放语义搜索的力量:Elastic Learned Sparse EncoderR

问题陈述 在信息过载的时代&#xff0c;根据上下文含义和用户意图而不是精确的关键字匹配来查找相关搜索结果已成为一项重大挑战。 传统的搜索引擎通常无法理解用户查询的语义上下文&#xff0c;从而导致相关性较低的结果。 解决方案&#xff1a;ELSER Elastic 通过其检索模型…

【数据结构与算法】常用排序算法对比

常用排序算法对比 相关术语解释&#xff1a; 稳定&#xff1a;如果 a 原本在 b 前面&#xff0c;而 a b&#xff0c;排序之后 a 仍然在 b 的前面。不稳定&#xff1a; 如果 a 原本在 b 前面&#xff0c;而 a b&#xff0c;排序之后 a 可能出现在 b 的后面。内排序&#xff…

安全渗透初级知识总结-2

CIA三原则&#xff1a;保密性&#xff0c;完整性&#xff0c;可用性 https:解决了安全传输问题 核心技术&#xff1a;用非对称加密传输对称加密的秘钥&#xff0c;然后用对称秘钥通信 抓包&#xff1a;Wireshark、tshark、tcpdump valueof方法是一个所有对象都拥有的方法&am…

【传统视觉】模板匹配和卡尺圆检测

模板匹配 粗定位 1、原理&#xff1a;模板匹配是指在当前图像A中匹配与图像B最相似的部分&#xff0c;那么A为输入图像&#xff0c;B为模板图像。 2、匹配方法&#xff1a;B在A上华东&#xff0c;逐个遍历所有像素完成匹配。 3、函数&#xff1a; result cv2.matchTemplate(…