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

解决react 路由切换,页面闪屏的bug

在router目录中添加如下配置

// // 配置路由信息
import {Navigate } from "react-router-dom"
import {lazy,Component, Suspense } from "react"
import { JSX } from 'react/jsx-runtime'


// 懒加载模式需要使用loding
const Layout=lazy(()=>import("@/layout/index"))

const Home = lazy(()=>(import("@/pages/home")))
const Page404=lazy(()=>(import("@/pages/404/index")))

// 设置
const Systemset = lazy(()=>(import("@/pages/systemSet/index")))
const Citytree = lazy(()=>(import("@/pages/systemSet/cityTree/index")))
// 登录
const Login=lazy(()=>import("@/pages/login/index"))

// 充电桩管理
const ChargManage=lazy(()=>(import("@/pages/chargingManagement/index")))
// 充电站管理
const ChargMangeList=lazy(()=>import("@/pages/chargingManagement/list/index"))
// 添加充电站
const AddChargingStation=lazy(()=>import("@/pages/chargingManagement/list/addCharging"))
// 充电桩
const ChargStation=lazy(()=>import("@/pages/chargingManagement/chargingStation/index"))
// 添加充电桩
const AddChargStation=lazy(()=>import("@/pages/chargingManagement/chargingStation/addCharging"))
// vr信息
const Vrfile=lazy(()=>import("@/pages/chargingManagement/vrFile/index"))
// 评价
const Evaluate=lazy(()=>import("@/pages/chargingManagement/evaluate/index"))
// 用户管理
const User=lazy(()=>import("@/pages/user/index"))
const UserList=lazy(()=>import("@/pages/user/list/index"))

// <Suspense>占位组件
/*当懒加载组件还没有加载出来的时候,先用占位组件显示。里面有一个属性fallback,
里面传进去的组件就是占位组件。有<Suspense>表示该组件懒加载出来的,决定是否懒加载出来的看是不是React.lazy().*/
const withLoading=(somp:JSX.Element)=>(
    <Suspense fallback={<div>加载中...</div>}>
           {somp}
        </Suspense>
)

interface rout{
    path:string,
    element:Component,
    label:"",
    children?:Array<any>
}
export interface routerInterfase extends rout{}
const RourterData:Array<any>=[
    {
        path: '/',
        element:<Navigate to='/home'></Navigate>, //路由重定,默认会跳转到/home路由下
        label:"首页",
        meta:{
            title:"首页"
        }
    },
    {
        path: '/',
        // <AutnToken><Layout></Layout></AutnToken>
        element:<Layout></Layout>,
        label:"首页",
        meta:{
            title:"首页"
        },
        children:[
            {
                path:'/home',
                element:withLoading(<Home></Home>),
                // element:<Home></Home>,
                label:"首页",
                meta:{
                    title:"首页"
                }
                
            },
            {
                path:'/chargingStation',
                element:withLoading(<ChargManage></ChargManage>),
                label:"充电站管理",
                meta:{
                    title:"充电站管理"
                },
                children:[
                    {
                        path:'/chargingStation/list',
                        element:withLoading(<ChargMangeList></ChargMangeList>),
                        label:"充电站列表",
                        meta:{
                            title:"充电站列表"
                        }
                    },
                    {
                        path:'/chargingStation/addCharginns',
                        element:withLoading(<AddChargingStation></AddChargingStation>),
                        label:"添加充电站",
                       
                    },
                    {
                        path:'/chargingStation/chargingPile',
                        element:withLoading(<ChargStation></ChargStation>),
                        label:"充电桩列表",
                        meta:{
                            title:"充电桩列表"
                        }
                    },
                    {
                        path:'/chargingStation/addCharginnsStation',
                        element:withLoading(<AddChargStation></AddChargStation>),
                        label:"添加充电桩",
                    },
                    {
                        path:'/chargingStation/varfile',
                        element:withLoading(<Vrfile></Vrfile>),
                        label:"vr信息",
                    },
                    {
                        path:'/chargingStation/evaluate/:id',
                        element:withLoading(<Evaluate></Evaluate>),
                        label:"评价管理",
                    }
                ]
            },
            {
                path:'/user',
                element:withLoading(<User></User>),
                label:"用户管理", 
                children:[
                    {
                        path:'/user/list',
                        element:withLoading(<UserList></UserList>),
                        label:"用户列表",
                        meta:{
                            title:"用户列表"
                        }
                    }
                ]
            },
            {
                path:'/systemSet',
                element:withLoading(<Systemset></Systemset>),
                label:"设置",
                meta:{
                    title:"设置"
                },
                children:[
                    {
                        path:'/systemSet/list',
                        element:withLoading(<Citytree></Citytree>),
                        label:"区域管理",
                        meta:{
                            title:"区域管理"
                        }
                    }
                ]
            }
        ]
    },
    {
        path: '/login',
        element:<Login></Login>,
        label:"登录"
    },
    {
        path: '*',
        element:<Page404></Page404>,
        label:"404"
    },
]

  export default RourterData;
  
  • 使用懒加载lazy() 添加路由
  • Suspense 懒加载组件在加载不出来的时候显示的内容
  • 需要再每层的路由配置中添加不然就会闪屏

http://www.kler.cn/a/449326.html

相关文章:

  • 电脑出现 0x0000007f 蓝屏问题怎么办,参考以下方法尝试解决
  • python 内存管理
  • 【086】基于51单片机电子音乐门铃【Proteus仿真+Keil程序+报告+原理图】
  • 增量训练(持续学习)
  • sh cmake-linux.sh -- --skip-license --prefix = $MY_INSTALL_DIR
  • 如何利用Python爬虫获得1688按关键字搜索商品
  • 复习打卡大数据篇——Hadoop HDFS 02
  • 流年运势API接口_解析个人命理十年大运PHP实现方法返回json数据
  • virtualbox7 使用 自带的nat网络配置 解决虚机上网问题
  • Qt中的QProcess与Boost.Interprocess:实现多进程编程
  • Opencv之对图片的处理和运算
  • 【初阶数据结构与算法】八大排序算法之交换排序(冒泡排序,快速排序---hoare、挖坑法、lomuto双指针3种版本)
  • RCE 命令执行漏洞 过滤模式 基本的过滤问题 联合ctf题目进行实践
  • 【蓝桥杯——物联网设计与开发】拓展模块4 - 脉冲模块
  • CentOS7网络配置,解决不能联网、ping不通外网、主机的问题
  • 使用 Python 实现 WebSocket 服务器与客户端通信
  • 【Unity Shader】【图形渲染】Shader数学基础9 - 缩放矩阵
  • html 通用错误页面
  • 航模锂电池使用
  • GESP CCF C++六级编程等级考试认证真题 2024年12月
  • 安全删除硬件并弹出媒体(弹出显卡)问题处理
  • 大模型系列——投机解码:Prompt Lookup Decoding代码解读
  • 使用pdf2zh遇到的问题
  • 海天味业:困境突围,再寻增长
  • CV实战项目----YOLO
  • SoftMoE:From sparse to soft mixtures of experts