欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > react react-router-dom中获取自定义参数v6.4版本之后

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

2025/6/14 10:33:02 来源:https://blog.csdn.net/u010843503/article/details/148637218  浏览:    关键词: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: ‘商品管理’ 这就是自定义的参数

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词