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

277/300 React+react-router-dom+Vite 二级页面刷新时,白屏问题解决

(一)方案

BrowserRouter 换为 HashRouter

(二)代码

import routes from './routes'
import  {ReactElement, Suspense} from 'react'
import {createHashRouter, Navigate} from 'react-router-dom'
// 生成路由数据
const generateRoutes = (routes:  Routes) => {return routes.map((item: RouteParams) => {const {component: Component} = item;const route: RouteObject = {path: item.path}if (item.redirect) {route.element = <Navigate to={item.redirect} replace/>} else if (Component) {route.element = <BeforeEach meta={item.meta} path={item.path}><Suspense><Component/></Suspense></BeforeEach>}if (item.children) {route.children = generateRoutes(item.children)}return route})
}
export default createHashRouter(generateRoutes(routes)
)

(三)更多代码

import routes from './routes'
import  {ReactElement, Suspense} from 'react'
import {createHashRouter, Navigate} from 'react-router-dom'
// 生成路由数据
const generateRoutes = (routes:  Routes) => {return routes.map((item: RouteParams) => {const {component: Component} = item;const route: RouteObject = {path: item.path}if (item.redirect) {route.element = <Navigate to={item.redirect} replace/>} else if (Component) {route.element = <BeforeEach meta={item.meta} path={item.path}><Suspense><Component/></Suspense></BeforeEach>}if (item.children) {route.children = generateRoutes(item.children)}return route})
}// 路由拦截器
const BeforeEach = (props: { meta?: RouteMeta, children: ReactElement, path: String; }) => {const { userStore } = useStores()const { meta, children, path } = props// 未登录if(meta){if(meta.isAuth && !userStore.isLogin || meta.userStatus && meta.userStatus !== userStore.info.status){return (<AutoReverse path={path} />)}}// 设置标题if (meta?.title) {document.title = meta.title}document.body.style.backgroundColor = meta?.backgroundColor || '';return children
}export default createHashRouter(generateRoutes(routes)
)
http://www.lryc.cn/news/121762.html

相关文章:

  • 如何做线上监控
  • 饥荒开服教程——游戏
  • 查询 npm/yarn 安装依赖的全局路径及路径修改
  • 掌握Python的X篇_35_用Python为美女打码_图像库Pillow
  • SpringBoot 异步、邮件任务
  • 【LeetCode】45. 跳跃游戏 II - 贪婪算法
  • [C初阶笔记]P1
  • 外企面试题
  • 【目标检测系列】YOLOV1解读
  • Sentieon | 每周文献-Multi-omics(多组学)-第九期
  • CSDN竞赛70期
  • mac安装vscode 配置git
  • UI自动化环境的搭建(python+pycharm+selenium+chrome)
  • AbstractQueuedSynchronizer
  • 谈谈什么是云计算?以及它的应用
  • 【BASH】回顾与知识点梳理(十六)
  • docsify gitee 搭建个人博客
  • SpringBoot2-Tomcat部署
  • Docker查看、创建、进入容器相关的命令
  • leetcode1. 两数之和
  • 温室花卉种植系统springboot框架jsp鲜花养殖智能管理java源代码
  • 测试老鸟经验总结,Jmeter性能测试-重要指标与性能结果分析(超细)
  • IDEA设置Maven自动编译model
  • 关于本地mockjs的使用
  • hive 中最常用日期处理函数
  • 记录一下Java实体转json字段顺序问题
  • 微积分入门:总结归纳汇总(一)
  • ubuntu python虚拟环境venv搭配systemd服务实战(禁用缓存下载--no-cache-dir)
  • 案例15 Spring Boot入门案例
  • 物联网是下一个风口吗?