react中函数组件使用v6路由

本文介绍了在React函数组件中使用V6版本react-router的配置,涉及核心模块、V6与V5版本差异、声明式和编程式导航、动态路由、路由拦截及懒加载。
摘要由CSDN通过智能技术生成

在react中要是用react-router路由进行页面的跳转分为v5路由和v6路由

在有状态的组件也叫class类组件中大多数使用v5路由,而在无状态的组件也叫函数组件大多数是用v6路由,而现在市面上主流都是用的函数组件也就是v6路由。

这期咱们来讲一下函数组件中的v6路由的配置以及使用

1. React Router(V6)简介
react-router 核心模块 ,包含 React 路由大部分的核心功能,包括路由匹配算法和大部分核心组
件和钩子
react-router-dom React 应用中用于路由的软件包,包括 react-router 的所有内容,并添加了一
些特定于 DOM API ,包括但不限于 BrowserRouter HashRouter Link
react-router-native :用于开发 React Native 应用,包括 react-router 的所有内容,并添加了一些
特定于 React Native API ,包括但不限于 NativeRouter Link
2. react-routerV6 版本和 V5 版本的不同
包大小的不同。 V5 版本的大小在 20.8kb 左右,压缩后在 7.3kb 左右; V6 版本在 10.8kb 左右 , 压缩后
3.8kb 左右
Route 特性变更
path :与当前页面对应的 URL 匹配
element :新增,用于决定路由匹配时,渲染哪个组件。替代 v5 component render
Routes 替代了 Switch
让嵌套路由更简单
useNavigate 替代 useHistory
移除了的 activeClassName activeStyle
钩子 useRoutes 替代 react - router - config
了解更多请看官网: https://github.com/remix-run/react-router
3.配置路由的准备工作
首先要下载v6路由(v6路由下载无序指定版本号)
npm i react-router-dom
首先在index.js入口文件中

1.导入RouterProvider

import { RouterProvider } from 'react-router-dom';

2.使用封装好的路由文件  router文件夹中的index.js就是路由的分装

import router from './router';

3.将组件中原有的app替换

 <RouterProvider router={router} />

自己在根目录src下创建router文件夹下面新建index.js
4.导入路由模式,重定向

import { createBrowserRouter, Navigate } from 'react-router-dom'

// 5.导入需要切换的路由组件

// import Login from '../component/Login'

// import Home from '../component/Home'

    // {

    //   path:"要跳转的路径",

    //   element:<要跳转的组件/>

    // },

代码参考以下

二级路由就是想在哪个路由下设置就在他下面设置children属性
在这里message,work,my,home都是属于app的子路由
这样就完成了一个v6路由的基本配置工作,可以手动在导航栏中输入路由进行页面的跳转
4.声明式导航与编程式导航
v6路由分为声明式导航和编程式导航
声明式导航
NavLink 组件会自动给当前的匹配到的路由 NavLink 添加一个 class 名为 active , 所以想要实
现高亮效果只需要设置 class 名为 active 的样式即可
还有一种自定义class名
NavLink 有一个属性为 className ,它接收一个函数,该函数的参数是一个对象,里面有一
个属性叫做 isActive ,我们可以根据这个属性的值是否为 true 来判断是否添加 class
说完声明式的导航再说编程式导航
导入useNavigate钩子函数

import { useNavigate } from 'react-router-dom'

使用 useNavigate 这个钩子函数可以让我们通过 js 的方式更加灵活的实现路由跳
通过 Outlet 组件实现嵌套路由的视图显示
5.动态路由
话不多说看图
query 形式传参
params形式传参
7.路由拦截(也叫路由前置守卫)
配置一个路由守卫来判断是否登录存在token值,如果存在就跳转到登录页
用配置好的路由来包裹要守卫的界面
8.路由懒加载
在入口index.js文件中用Suspense包裹路由表
需要注意的是要是用路由懒加载导入都得需要用懒加载导入
浏览器访问时候要切换成低速3g才能确保效果实现
不能既用普通的import导入又用懒加载导入这样会导致报错
如有不足,敬请指出!!!
今天就是我要讲的关于函数组件中v6路由的的讲解
下期继续更新关于react的知识,想看哪一块,在评论区地下说,我会尽量去做!!
React Router v6,可以使用路由表进行动态路由。根据你提供的描述,我可以给出以下方法实现根据权限动态加载路由表: 1. 首先,你需要定义一个路由表,包含了你的权限和对应的组件。例如: ```jsx const routes = [ { path: "/dashboard", permission: "admin", component: AdminDashboard, }, { path: "/dashboard", permission: "user", component: UserDashboard, }, // 其他路由... ]; ``` 这个路由表包含了不同权限对应的路径和组件。 2. 接下来,在你的应用使用`Routes`组件来渲染路由表。例如: ```jsx import { Routes, Route } from "react-router-dom"; const App = () => ( <Routes> {routes.map((route, index) => ( <Route key={index} path={route.path} element={<route.component />} caseSensitive={false} /> ))} </Routes> ); ``` 这里使用了`Routes`组件来渲染路由的每一个路由项。通过`map`函数遍历路由表,在每个路由项上使用`Route`组件进行渲染。 3. 最后,在你需要根据权限动态加载路由表的地方,根据用户的权限动态筛选路由表并渲染相应的路由。例如: ```jsx import { useRoutes } from "react-router-dom"; const App = () => { const filteredRoutes = routes.filter( (route) => route.permission === userPermission ); const element = useRoutes(filteredRoutes); return element; }; ``` 这里使用`useRoutes`钩子函数来根据筛选后的路由表渲染路由。根据用户的权限,将筛选后的路由表传入`useRoutes`函数,返回对应的路由元素。 通过以上的方法,你可以根据权限动态加载路由表,并实现你所需的功能。希望对你有帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值