四十六----react路由

一、react 路由使用

import { render } from "react-dom";
import {BrowserRouter,Routes,Route,
} from "react-router-dom";
// import your route components too
render(<BrowserRouter><Routes><Route path="/" element={<App />}><Route index element={<Home />} /><Route path="teams" element={<Teams />}><Route path=":teamId" element={<Team />} /><Route path="new" element={<NewTeamForm />} /><Route index element={<LeagueStandings />} /></Route></Route></Routes></BrowserRouter>,document.getElementById("root")
);

config+hooks用法

import { render } from "react-dom";
import { useRoutes, BrowserRouter } from 'react-router-dom'
function Routes() {return useRoutes([{path: '/',element: <App>,children: [{path: '/,element: <Home />,},{path: '/teams',element: <Teams />children: [{path: ':tamId',element: <Team />}]}]},])
}
render(<BrowserRouter><Routes /></BowserRouter>,document.getElementById("root"))如果是自路由则用<Outlet>占位

页面跳转

<Link to="/">To</Link>
<Navigate to="/login">To</Link>

hooks用法

const location = useLocation()
location.push("/")const navigate = useNavigate();
navigate.push("/")

二、路由鉴权及跳转拦截
1、路由配置里带权限需求
route.js

import { useRoutes } from "react-router"
import { RequireAuth } from "./auth"
import Layout from "./layouts/Layout"
import About from "./pages/About"
import Account from "./pages/Account"
import Home from "./pages/Home"
import Login from "./pages/Login"
import Logout from "./pages/Logout"export const routes = [{path: '/',name: '首页',element: <Home />,nav: true,},{path: '/about',name: '关于我们',element: <About />,nav: true,},{path: '/login',name: '登录',element: <Login />,},{path: '/logout',name: '退出登录',element: <Logout />},{path: '/account',name: '我的账户',element: <Account />,auth: true,nav: true,}
]function Routes () {const r = useRoutes([{path: '/',element: <Layout />,children: routes.map(e => {if (e.auth) {e.element = (<RequireAuth>{e.element}</RequireAuth>)}return e;}),}]);return r;
}export default Routes;

main.js

import * as React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter } from "react-router-dom";
import Routes from "./routes";
import "./index.css";
import { AuthProvider } from "./auth";ReactDOM.hydrate(<React.StrictMode><AuthProvider><BrowserRouter><Routes /></BrowserRouter></AuthProvider></React.StrictMode>,document.getElementById("root")
);
//或者

或者直接在界面编写路由,这种需要在具体组件里鉴权
使用React.lazy可以实现组件/路由懒加载,懒加载可以使得代码切割打包分开,使得首次加载的包体积变小。

import * as React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import { AuthProvider } from "./auth";
import "./index.css";
import Layout from "./layouts/Layout";
import Home from "./pages/Home";
import Login from "./pages/Login";const Account = React.lazy(() => import("./pages/Account"));ReactDOM.hydrate(<React.StrictMode><AuthProvider><BrowserRouter><Routes><Route path="/" element={<Layout />}><Route path="/" element={<Home />} /><Route path="/account" element={

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

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

相关文章

Vue学习笔记-Vue3的toRef和toRefs

toRef 作用&#xff1a;创建一个ref对象&#xff0c;其value值指向与其绑定的数据对象中的某个属性&#xff0c;当toRef创建的对象值改变时&#xff0c;与其绑定的响应式对象中对应的属性也发生改变导入&#xff1a;import {toRef} from vue使用&#xff1a;const name toRef…

OSG基础学习 - 顶点数组类型、法线、绘制四边形

之前已经学习了osg加载场景的基本流程; Geometry类型是一个几何体对象;定义一个几何体对象geom1; Vec3Array是向量数组类型,定义该类型的变量v1; v1调用push_back方法放入4个向量,Vec3是三维向量; 并把v1设置为geom1的顶点数组; 法线也是用一个三维向量表示; 定义一…

Python【Matplotlib】图例可拖动改变位置

代码&#xff1a; import matplotlib.pyplot as plt from matplotlib.widgets import Button# 创建一个示例图形 fig, ax plt.subplots() line, ax.plot([1, 2, 3], labelLine 1)# 添加图例 legend ax.legend(locupper right, draggableTrue)# 添加一个按钮&#xff0c;用于…

mybatis动态SQL-sql片段

1、建库建表 create database mybatis-example; use mybatis-example; create table emp (empNo varchar(40),empName varchar(100),sal int,deptno varchar(10) ); insert into emp values(e001,张三,8000,d001); insert into emp values(e002,李四,9000,d001); insert into…

Electron 中创建透明窗口

在开发 Electron 应用时&#xff0c;可能需要创建完全透明的窗口&#xff0c;比如我们要做一个屏幕内容共享的功能&#xff0c;在特定矩形区域内的内容才会被共享出来&#xff0c;而这个区域是一个透明且可被穿透的区域。 首先我们需要再主进程上创建一个矩形窗口 const scre…

简单电子报警器设计与制作方法

简单电子报警器设计与制作方法 注&#xff1a; 1、按上图连接好。 2、改变R&#xff58;的大小即使基极电路的电流发生改变&#xff0c;使频率发生改变。 3、增大电容&#xff0c;有利于低音向第一个三极管的基极反馈&#xff0c;因此最终 输出频率变低。 4、R2处接光敏电阻…

数据结构和算法-AOV与AOE网络和(逆)拓扑排序与关键路径

文章目录 AOV网络拓扑排序代码实现时间复杂度 逆拓扑排序实现DFS算法实现逆拓扑排序小结 AOE网络关键路径求关键路径求事件最早发生时间求事件最迟发生时间求活动最早发生时间求活动最迟发生时间求活动余量 关键活动 关键路径的特性小结 AOV网络 必须是DAG图&#xff08;有向无…

Microsoft刷题记录

PASS区 串联字符串的最大长度通知所有员工所需的时间单词搜索 PASS但非最优 合并区间实现 Trie (前缀树) 非PASS区 将石头分散到网格图的最少移动次数去除重复字母和为K的子数组颜色分类 注意 dfs 应该是i1&#xff0c;而不是idx1&#xff0c;老容易写错

本科论文降重修改技巧 神码ai

大家好&#xff0c;今天来聊聊本科论文降重修改技巧&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 本科论文降重修改技巧 对于本科论文的写作&#xff0c;降重修改是一个…

C++ I/O操作---输入输出

本文主要介绍C I/O操作中的输入输出流。 目录 1 输入输出 2 输入输出流分类 3 C中的输入输出流 4 iostream 5 std::ofstream 6 std::fstream 7 std::getline 1 输入输出 C的输入输出是数据在不同设备之间的传输&#xff0c;即在硬盘、内存和外设之间的传输。 数据如水流…

飞天使-docker知识点6-容器dockerfile各项名词解释

文章目录 docker的小技巧dockerfile容器为什么会出现启动了不暂停查看docker 网桥相关信息 docker 数据卷 docker的小技巧 [rootlight-test playbook-vars[]# docker inspect -f "{{.NetworkSettings.IPAddress}}" d3a9ae03ae5f 172.17.0.4docker d3a9ae03ae5f:/etc…

【idea】解决sprintboot项目创建遇到的问题

目录 一、报错Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found 二、报错java: 错误: 无效的源发行版&#xff1a;17 三、java: 无法访问org.springframework.web.bind.annotation.CrossOrigin 四、整合mybatis的时候&#xff0c;报java.lang.Ill…

电子元器件介绍——二极管(四)

电子元器件介绍 文章目录 电子元器件介绍前言一、二极管的基础知识二、二极管的分类三、二极管的应用总结 前言 这一节我们看一下二极管。 一、二极管的基础知识 PN结&#xff1a;是指一块半导体单晶&#xff0c;其中一部分是P型区&#xff0c;其余部分是N型区。 在电场作用…

听GPT 讲Rust源代码--src/tools(14)

File: rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs这个文件是Rust语言分析器&#xff08;Rust Analyzer&#xff09;的一部分&#xff0c;用于处理和管理条件编译指令&#xff08;Cond…

打破涨粉瓶颈!如何通过视频号找热门话题?

如果你正在运营视频号&#xff0c;相信你一定会遇到这样的瓶颈&#xff0c;视频号播放不理想&#xff0c;牟足劲想涨几个粉丝&#xff0c;结果还掉粉了&#xff1f;今天我们就聊聊如何通过视频号找热门话题! 当你的播放和粉丝增长停滞 数据不好的的时候需要更新迭代 同时还需…

DeciLM-7B:突破极限,高效率、高精准度的70亿参数AI模型

引言 在人工智能领域&#xff0c;语言模型的发展速度令人瞩目。Deci团队最近推出了一款具有革命性意义的语言模型——DeciLM-7B。这款模型在速度和精确度上都实现了显著的突破&#xff0c;以其70亿参数的规模&#xff0c;在语言模型的竞争中脱颖而出。 Huggingface模型下载&am…

数据库通用语法DML-MySQL

DML&#xff08;数据操作语言&#xff09; 添加数据 指定字段&#xff1a; INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); 全部字段&#xff1a; INSERT INTO 表名 VALUES (值1, 值2, ...); 批量添加数据&#xff1a; INSERT INTO 表名 (字段名1, 字段…

torch中张量与数据类型的介绍

PyTorch张量的定义介绍 PyTorch最基本的操作对象是张量&#xff0c;它表示一个多维数组&#xff0c;类似NumPy的数组&#xff0c;但是前者可以在GPU上加速计算 初始化张量 ttorch.tensor([1,2]) # 创建一个张量 print(t) t.dtype #打印t的数据类型为torch.int…

尺度函数与小波函数

尺度函数与小波函数 尺度函数 设存在函数 φ j , k ( x ) 2 j / 2 φ ( 2 j x − k ) \varphi_{j,k}(x)2^{j/2}\varphi(2^{j}x-k) φj,k​(x)2j/2φ(2jx−k) 对所有的 j j j, k ∈ Z k{\in}\mathbb{Z} k∈Z 和 φ ( x ) ∈ L 2 ( R ) \varphi(x){\in}L^2(R) φ(x)∈L2(R)…

为什么Apache Doris适合做大数据的复杂计算,MySQL不适合?

为什么Apache Doris适合做大数据的复杂计算&#xff0c;MySQL不适合&#xff1f; 一、背景说明二、DB架构差异三、数据结构差异四、存储结构差异五、总结 一、背景说明 经常有小伙伴发出这类直击灵魂的疑问&#xff1a; Q&#xff1a;“为什么Apache Doris适合做大数据的复杂计…