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

Ant Design+react 路由跳转

今天我们来继续探讨react的路由跳转

首先,创建router文件夹中的index

import { lazy } from "react";
import { Outlet,useRoutes } from 'react-router-dom';
//引入页面,引用了路由懒加载
const One = lazy(() => import('../pages/one'));
const Two = lazy(() => import('../pages/two'));
const Three = lazy(() => import('../pages/three'));
//设置页面的路由路径
const routes = [{path: '/one',element: <One/>,},{path: '/two',element: <Two/>,children: []},{path: '/three',element: <Three/>,}
];
const WrappedRoutes = () => {return useRoutes(routes);};export default WrappedRoutes;

之后就是App.js页面了,我的layout是写在app.js里的,所以要在app.js进行设置

import React, { useState,lazy } from 'react';
import {MenuFoldOutlined,MenuUnfoldOutlined,UploadOutlined,UserOutlined,VideoCameraOutlined,
} from '@ant-design/icons';
import { Layout, Menu, Button, theme } from 'antd';
import WrappedRoutes from './router/index'; // 引入路由表
import { useLocation, useNavigate,Routes, Route } from 'react-router-dom';
const One = lazy(() => import('./pages/one'));
const Two = lazy(() => import('./pages/two'));
const Three = lazy(() => import('./pages/three'));
const { Header, Sider, Content } = Layout;const App: React.FC = () => {const [collapsed, setCollapsed] = useState(false);const {token: { colorBgContainer },} = theme.useToken();const navigate = useNavigate();const { pathname } = useLocation(); // 获取当前urlconst handleClick = (e: any) => {// 获取当前点击事件的key值,key值就是我们给页面配置的路由啦console.log('key', e.key);navigate(e.key,{replace:true}); // 实现跳转}return (<Layout><Sider trigger={null} collapsible collapsed={collapsed}><div className="demo-logo-vertical" /><Menutheme="dark"mode="inline"selectedKeys={[pathname]}onClick={handleClick}   //给侧边栏item设置点击事件defaultSelectedKeys={['1']}items={[{key: '/one',icon: <UserOutlined />,label: 'nav 1',},{key: '/two',icon: <VideoCameraOutlined />,label: 'nav 2',},{key: '/three',icon: <UploadOutlined />,label: 'nav 3',},]}/></Sider><Layout><Header style={{ padding: 0, background: colorBgContainer }}><Buttontype="text"icon={collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}onClick={() => setCollapsed(!collapsed)}style={{fontSize: '16px',width: 64,height: 64,}}/></Header><Contentstyle={{margin: '24px 16px',padding: 24,minHeight: 280,background: colorBgContainer,}}>{/*路由出口 */}<Routes><Route exact path="/one" element={<One />} /><Route exact path="/two" element={<Two />} /><Route exact path="/three" element={<Three />} /></Routes></Content></Layout></Layout>);
};export default App;

到这里还有最重要的一步,因为我们这是的路由懒加载,这个时候跳转是会报错的

一直出现不能读到pathname,从<router>的时候就出现这个问题,那么问题估计出现在<router>这个标签上。找不到路径名,那就是没有找到地址于是我把<router>换成了<BrowserRouter>,就可以了。

import React,{ Suspense } from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { BrowserRouter } from 'react-router-dom';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<React.StrictMode><BrowserRouter>{/* 在使用组件懒加载的时候,在外面套一个react的组件:Suspense ,否则会报错没有  */}<Suspense><App /></Suspense></BrowserRouter></React.StrictMode>
);
reportWebVitals();

最后,在使用路由懒加载的同时,一定要记得使用<Suspense>嵌套,否则还是会报错,切记切记

http://www.lryc.cn/news/191222.html

相关文章:

  • 提高爬虫效率的秘诀之一:合理配置库池数量
  • 初学者必看,前端 Debugger 调试学习
  • Dubbo—Admin 整体架构与安装步骤
  • C++11打断线程的几种方式
  • 如何提升网站排名和用户体验:优化网站速度
  • 【Redis】Hash 哈希内部编码方式
  • JUC第二十八讲:JUC工具类: Semaphore详解
  • vue3组合式API实现父组件触发子组件中的方法 | vue3中ref的用法 | defineExpose的使用场景
  • 【Qt之QTableWidget和QTreeWidget】树悬停、选择样式及表格表头和首行间隔线
  • 使用余弦算法计算向量相似性
  • 存档&改造【06】Apex-Fancy-Tree-Select花式树的使用误删页数据还原(根据时间节点导出导入)
  • OpenCV7-copyTo截取ROI
  • OpenCV10-图像直方图:直方图绘制、直方图归一化、直方图比较、直方图均衡化、直方图规定化、直方图反射投影
  • 线性回归模型进行特征重要性分析
  • hadoop -hive 安装
  • 小迈物联网网关对接串口服务器[Modbus RTU]
  • Java版本+企业电子招投标系统源代码+支持二开+招投标系统+中小型企业采购供应商招投标平台
  • Vue3中reactive, onMounted, ref,toRaw,conmpted 使用方法
  • 有哪些免费的PPT模板网站,推荐这6个PPT模板免费下载网站!
  • 剧院建筑三维可视化综合管控平台提高安全管理效率
  • “过度炒作”的大模型巨亏,Copilot每月收10刀,倒赔20刀
  • 顺序表经典的OJ题
  • video_topic
  • uniapp获取公钥、MD5,‘keytool‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  • Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速
  • Spring Security 6.x 系列【67】认证篇之安装 ApacheDS
  • 理解线程池源码 【C++】面试高频考点
  • BP神经网络应用案例
  • 日常学习记录随笔-大数据之日志(hadoop)收集实战
  • 【云计算】相关解决方案介绍