位置: IT常识 - 正文

React中使用react-router-cache-route缓存页面状态(react-use)

发布时间:2024-01-07
React中使用react-router-cache-route缓存页面状态 一、背景

推荐整理分享React中使用react-router-cache-route缓存页面状态(react-use),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:react current,react ir,react_,react_,react_,react it,react-use,react_,内容如对您有帮助,希望把文章链接给更多的朋友!

在开发中,从A页面跳转到other页面,再返回A页面时react-router会直接刷新页面,导致A页面中已加载的海量数据状态丢失,需要重新加载,用户体验不佳,所以必须将海量数据状态进行缓存。 (在小编的实际场景中,A页面是一堆模型&业务数据标注点,由于模型永远不会更改,但是加载又很缓慢,因此,希望从other页面返回A页面时,模型不会重新加载,但是需要更新业务数据。) (其他应用场景举例:开发中有从详情页返回列表页的需求,这样一来页面返回后使用react-router会直接刷新页面,导致页面中的分页和搜索条件全部丢失,用户体验不佳,所以就必须将列表页的状态进行缓存。)

二、参考方法

网上搜索大概有几种方法: 1、使用localStorage/sessionStorage进行页面的状态的保存,跳转页面后再进行获取,这种方法虽然可行,但是从根本来说还是从新向后台再一次请求了数据,不算最佳方案。 2、react-activation,尝试未果 3、react-kepper,需要将项目的react-router替换掉,风险较大,慎用 4、react-router-cache-route,简单易用,最佳方案

三、react-router-cache-route的使用React中使用react-router-cache-route缓存页面状态(react-use)

就是把Switch替换成CacheSwitch,因为因为Switch组件只保留第一个匹配状态的路由,卸载掉其他路由 把Route替换成CacheRoute 注意:other面回退A页面时使用this.props.history.push(‘’路径’)可以实现页面的缓存 但当使用this.props.history.go(-1)则缓存失败

四、具体步骤

1、替换Switch和Route 静态路由

import React,{Component} from 'react'import { Route} from 'react-router-dom'import {CacheRoute,CacheSwitch} from 'react-router-cache-route'import PageA from './demo/PageA.js'import PageB from './demo/PageB.js'import PageOther from './demo/PageOther.js'class App extends Component{ render(){ return( <div className='App'> <CacheSwitch> <CacheRoute exact path='/platform/PageA' component={PageA}/> <Route path='/platform/PageB' component={PageB}/> <Route path='/platform/PageOther' component={PageOther}/> </CacheSwitch> </div> ) }}export default App;

动态路由

function AppRouter() { return ( <Router history={history}> <AppContainer> <CustomHeader /> <CacheSwitch> {routes.map((route: RouteType, index: number) => { return route.cache ? ( <CacheRoute exact={true} path={`/${route.routerPath}`} key={index} component={route.component} /> ) : ( <Route // strict={true} exact={true} path={`/${route.routerPath}`} key={index} component={route.component} /> ); })} <Redirect to="/login" /> </CacheSwitch> </AppContainer> </Router> );}

动态理由,加判断标志位:cache,只有传递了cache页面才能被缓存,没有传递cache,就用普通路由形式

{ path: '/PageA', component: PageA, cache:true,//判断标志位},{ path: '/PageB', component: PageB,},

2、如何更新其他想要更新的业务数据

//缓存A页面跳转至other页面()componentDidCache = () => { console.log('List cached')}//缓存恢复(从other页面跳转返回A页面)componentDidRecover = () => { // 这里可以更新业务数据 console.log('List recovered')}

3、参考 https://github.com/CJY0208/react-router-cache-route/blob/HEAD/README_CN.md

本文链接地址:https://www.jiuchutong.com/zhishi/288875.html 转载请保留说明!

上一篇:Dos Ojos自然公园里El Pit Cenote的潜水员,墨西哥金塔纳罗奥 (© Christia Vizl/Tandem Stills + Motion)(自然公园在哪)

下一篇:【今日七夕】 (© Martin Hale/Minden Pictures)(今夕七夕)

  • 工商注册经营部和公司的区别
  • 手机里面的发票在哪里
  • 应付销售方代垫的运费计入什么科目
  • 人工费用包括哪些科目
  • 员工离职补偿需要计提吗
  • 在建工程有增值税发票吗
  • 委托加工物资属于在产品吗
  • 购入免征车船税吗
  • 建筑企业临时工工资申报个税
  • 增值税一般纳税人证明文件
  • 预付账款属于什么账户
  • 完工绿化苗木怎样结转成本?
  • 抵货款回来的产品叫什么
  • 物业做账的时候怎么做
  • 税务稽查补缴的税款怎么处理
  • 税控盘锁死还能报税吗
  • 特许权使用费个税计算公式
  • 种香菇会赔钱吗
  • 纳税调增调减项目有哪些各站多少比例
  • 采购核算成本的核算方法
  • 网店提现要多久能到账
  • windows 11密钥
  • 高新技术企业研发费占比
  • 在win7中,如何搜索指定扩展名的文件
  • php实现上传图片功能
  • 公司向私人借款利息可以入账吗
  • 土地房屋转让协议书
  • 鸿蒙怎么设置默认系统
  • 公司收入没有进项
  • 有关应付债券的法律规定
  • 同业代付会计分录
  • 土方工程公司账务实例
  • 总分机构 分总机构
  • 一个金税盘可以用一个用户名和密码开票吗
  • ajax调用
  • 机动车组织机构代码查询
  • 红冲上年度收入怎么做凭证
  • 物业公司代收水费账务处理
  • 企业合并的定义是什么
  • 上一年的进项税转出还用交企业所得税吗
  • 帝国cms文件夹介绍
  • 电子税务局如何添加办税人员
  • 企业所得税弥补亏损怎么弥补
  • 房地产公司收房款怎么分录
  • 残疾人就业保障金怎么计算
  • 航天信息全额抵扣分录
  • 机票行程单如何看座位等级
  • 加计抵减需要计税吗
  • 交易性金融资产的账务处理
  • 土地作为无形资产需要计提折旧吗?
  • 小型微利企业年报填什么表
  • 营业外支出的具体内容
  • 递延所得税转回税率不一致
  • 设备上的配件计入什么费用
  • 购买金税盘取得的发票
  • 银行承兑汇票的承兑人
  • 财务人员的职工福利费应计入?
  • 连接mysql数据出错1045
  • mysql5.7免安装版
  • sql分几类
  • for windows vista only
  • linux系统对硬件要求高吗
  • win7系统锁屏密码
  • window系统怎么截屏屏幕
  • csrsyncmlserver.exe是什么文件
  • Mac借助其他电脑做系统
  • rapapp.exe - rapapp是什么进程 有何作用
  • WIN10系统安装教程
  • win7笔记本电脑
  • javascript动画教程
  • 10个JavaScript中易犯小错误
  • 简要说明javascript的作用
  • jquery ajax双击div可直接修改div中的内容
  • 详解javascript事件冒泡
  • python编写一个模块
  • javascript面向对象编程
  • 2022款进口途锐
  • 什么是解放思想?请阐述解放思想和实事求是之间的关系
  • 安徽高考实行什么模式
  • 北京税务热线电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号