当前位置: 首页 > ds >正文

react react-router-dom中获取自定义参数v6.4版本之后

路由配置, AutnToken 组件作为权限、登录管理

import { createBrowserRouter, Navigate } from 'react-router-dom';
import Layout from '@/layout/index';
import Login from '@/pages/login';
import Page404 from '@/pages/404';import AutnToken from '@/components/authToken';
import { lazy } from 'react';
import withLoading from "@/components/router/withLoading";
import product from './product';
let router1:any=[
{path: '/',element: <Navigate to="/home" replace />,},{path: '/',element: (<AutnToken><Layout /></AutnToken>),children: [{path: 'home',element: withLoading(lazy(() => import("@/pages/home"))),handle: {title: "首页",},},...product,{path: 'userAdmin',element: withLoading(lazy(() => import("@/pages/user"))),children: [{path: 'userList',handle: {title: "用户列表",},element:withLoading(lazy(() => import("@/pages/user/userList"))),},],},],},{path: '/login',element: withLoading(lazy(() => import("@/pages/login"))),},{path: '*',element: withLoading(lazy(() => import("@/pages/404"))),}
]
export const router = createBrowserRouter([...router1]);

main.tsx

import { Suspense } from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.tsx'
import './index.scss'import { BrowserRouter, RouterProvider } from "react-router-dom";
// 添加如下import { Provider } from 'react-redux'
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
import { ConfigProvider } from 'antd'
// type Locale = ConfigProviderProps['locale'];
import zhCN from 'antd/es/locale/zh_CN';  //引入中文包 
import { PersistGate } from 'redux-persist/integration/react'import {router} from "@/router/index"
import { storeData, persistor } from "@/store"
dayjs.locale('cn');
// 关闭严格模式
ReactDOM.createRoot(document.getElementById('root')!).render(<Provider store={storeData}><PersistGate loading={null} persistor={persistor}><ConfigProvider locale={zhCN}><RouterProvider router={router} /></ConfigProvider></PersistGate></Provider>
);

AutnToken

// components/authToken/index.tsx
import { Navigate, Outlet, useLocation, useMatches } from 'react-router-dom';
import { useSelector } from 'react-redux';
import { RootState } from '@/store';
import { ReactNode } from 'react';
interface AutnTokenProps {children: ReactNode;
}
export default function AutnToken({ children }: AutnTokenProps) {const userData = useSelector((state: RootState) => state.getDataConfig);const { token } = userData;const location = useLocation();console.log(token,"判断是否登录,")if (!token && location.pathname !== '/login') {return <Navigate to="/login" replace />;}
//   判断是否有权  ----
const matches = useMatches();
const metas = matches.map((match:any) => {console.log(match,"路由信息--")})return <>{children}</>;
}

handle {title: ‘商品管理’ 这就是自定义的参数

http://www.xdnf.cn/news/14149.html

相关文章:

  • 使用大模型预测甲状旁腺恶性肿瘤的研究报告
  • 2025年6月英语四级CET-4作文预测10篇7页PDF
  • 电路图识图基础知识-电动机的保护电路保护方式(二十六)
  • (题目向,随时更新)动态规划算法专题(2) --见识常见的尝试模型
  • centos 8.3(阿里云服务器)mariadb由系统自带版本(10.3)升级到10.6
  • AI与机器学习ML:利用Python 从零实现神经网络
  • 科技新底座揭幕!2025 MWC上海锚定AI+、5G融合、双区创新三大引擎
  • 扩展模块--QWebEngine功能及架构解析
  • XPath 注入与修复
  • 通过SMS凭据管理系统,实现数据库密码、服务器密码、Token等机密信息的临时授权和安全合规使用
  • 【unitrix】 1.5 Unitrix库结构和设计意图(lib.rs)
  • Linux系统技能:用户权限精细化管理与性能调优秘籍分享
  • 开疆智能ModbusTCP转Devicenet网关连接西门子200Smart与费托斯阀岛案例
  • Redis高级|Redis单线程VS多线程(基础)
  • 【DNS解析】DNS解析从入门到精通
  • 前端持续集成和持续部署简介
  • 英飞凌亮相SEMICON China 2025:以SiC、GaN技术引领低碳化与数字化未来
  • 圆与 π | 从几何之美到数学与物理的奇妙之旅
  • 2025【证券从业】数值事件
  • 系统架构设计师 1
  • Python6.13打卡(day45)
  • Terraform跨云迁移教程:从AWS到阿里云基础设施同步 (2025)
  • Mysql死锁排查及优化方案
  • 黄仁勋在2025年巴黎VivaTech大会上的GTC演讲:AI工厂驱动的工业革命(上)
  • 26考研 | 王道 | 计算机组成原理 | 七、输入输出系统
  • 容器的本质是进程
  • c#和c++区别
  • LLM-大模型原理
  • Agent智能体应用到医疗领域场景有哪些?
  • 缓存击穿,缓存穿透,缓存雪崩的原因和解决方案