位置: IT常识 - 正文

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

编辑:rootadmin
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)(今夕七夕)

  • 百度站长消息提醒工具新增5大异常提醒(百度站长统计怎样添加)

    百度站长消息提醒工具新增5大异常提醒(百度站长统计怎样添加)

  • 腾讯视频字幕怎么上移(腾讯视频字幕怎么去掉)

    腾讯视频字幕怎么上移(腾讯视频字幕怎么去掉)

  • airpods固件不更新(airpods固件不更新影响什么)

    airpods固件不更新(airpods固件不更新影响什么)

  • 计算机之所以能实现自动连续运算,是由于采用了什么原理(计算机之所以能做到运算速度快自动化程度高)

    计算机之所以能实现自动连续运算,是由于采用了什么原理(计算机之所以能做到运算速度快自动化程度高)

  • 热点链接无法访问互联网(热点链接无法访问网络)

    热点链接无法访问互联网(热点链接无法访问网络)

  • 华为p40闹铃怎么设置(华为p40闹铃怎么设置震动)

    华为p40闹铃怎么设置(华为p40闹铃怎么设置震动)

  • 华为nova7防水等级(华为nova7防水性)

    华为nova7防水等级(华为nova7防水性)

  • 大王卡虎牙直播免流吗(大王卡虎牙直播为什么不免流量了)

    大王卡虎牙直播免流吗(大王卡虎牙直播为什么不免流量了)

  • 三星s9自动关机原因(三星s9自动关机后无法开机)

    三星s9自动关机原因(三星s9自动关机后无法开机)

  • plktl01h是什么型号(plk—tl01h)

    plktl01h是什么型号(plk—tl01h)

  • 钉钉退出群聊会提示吗(钉钉退出群聊会显示吗)

    钉钉退出群聊会提示吗(钉钉退出群聊会显示吗)

  • 微星b450迫击炮支持nvme吗(微星b450迫击炮点不亮)

    微星b450迫击炮支持nvme吗(微星b450迫击炮点不亮)

  • 华为nova7耳机孔在哪里(华为耳机孔在哪里)

    华为nova7耳机孔在哪里(华为耳机孔在哪里)

  • 抖音不绑定手机号可以上热门吗(抖音不绑定手机号可以登陆吗)

    抖音不绑定手机号可以上热门吗(抖音不绑定手机号可以登陆吗)

  • 华为手机怎么设置色彩校正(华为手机怎么设置来电铃声)

    华为手机怎么设置色彩校正(华为手机怎么设置来电铃声)

  • 小米CC9最大充电功率(小米cc9最大充电功率多少)

    小米CC9最大充电功率(小米cc9最大充电功率多少)

  • 华为gt2可以插手机卡吗(华为gt2手表可以插卡打电话吗)

    华为gt2可以插手机卡吗(华为gt2手表可以插卡打电话吗)

  • 快手账号注销需要几天(快手账号注销需要满足什么条件)

    快手账号注销需要几天(快手账号注销需要满足什么条件)

  • 云闪付收款支持哪些(云闪付收款支持信用卡付款吗)

    云闪付收款支持哪些(云闪付收款支持信用卡付款吗)

  • word文档表格怎么制作(word文档表格怎么合并单元格)

    word文档表格怎么制作(word文档表格怎么合并单元格)

  • 怎么让小爱同学播放网易云音乐(怎么让小爱同学关灯)

    怎么让小爱同学播放网易云音乐(怎么让小爱同学关灯)

  • 苹果手机电池显示维修怎么回事(苹果手机电池显示服务)

    苹果手机电池显示维修怎么回事(苹果手机电池显示服务)

  • 苹果手机触控id密码是什么(苹果手机触控id在哪里设置)

    苹果手机触控id密码是什么(苹果手机触控id在哪里设置)

  • 新网的云主机和云虚机的区别(新网的云主机和什么连接)

    新网的云主机和云虚机的区别(新网的云主机和什么连接)

  • 手机误订业务怎么取消(手机误订业务怎么办理)

    手机误订业务怎么取消(手机误订业务怎么办理)

  • 结构体全解,适合初学者的一条龙深度讲解(附手绘图详解)(结构体基本知识)

    结构体全解,适合初学者的一条龙深度讲解(附手绘图详解)(结构体基本知识)

  • 自己房子出租发布信息
  • 稳岗返还多久能到账
  • 水利建设专项基金的税率
  • 公司如何做成集团
  • 银行贷款受托支付后,钱怎么转回来
  • 已缴企业所得税公司账户的钱怎么办
  • 企业向个人借款合同模板
  • 预收账款开票怎么做账
  • 本月无凭证需要结转吗
  • 物业公司预收的物业费一次性申报还是分期申报
  • 开保函会计分录
  • 个人账户付款可以开公司发票吗
  • 固定资产销售税务处理
  • 房产交易会涉及哪些费用
  • 设定提存计划怎么填
  • 企业捐赠扣除
  • 无偿使用房屋
  • 缴纳车船税的车辆
  • 小规模企业增值税账务处理
  • 入住酒店报销
  • 财务报表批准日是哪一天
  • 供热企业所使用的燃气
  • 厦门新车购置税计算
  • window10 怎么避免弹窗广告
  • 上月暂估入账
  • 少计提的地税怎么做分录
  • php上传大文件失败
  • php的数组函数
  • 资产评估没有发票可以吗
  • dghm.exe是什么程序
  • 商贸企业国民经济行业代码
  • 大数据可视化前端界面模板
  • web网页设计期末作业猫眼电影首页
  • yii框架连接数据库
  • 发行通告
  • 毕业设计基于web难还是JAVA
  • 发票 加工费
  • 帝国cms使用手册
  • 固定资产清理的含义
  • 应付票据贴现是负债吗
  • php页面出不来
  • 用税盘开发票税费扣除是怎么回事?
  • 直接人工费和应付职工薪酬
  • 销售使用过的车辆应该如何交增值税
  • 10万销售额是含税还是不含税
  • 小规模季度免税政策
  • 建筑企业结转成本依据准则
  • 企业残保金什么情况下可以减免
  • 深圳税务2021
  • 金税四期上线企业还活吗
  • 食堂维修费用计入什么科目
  • 不用交社保的几种情况
  • 计提工会经费如何划入工会专户
  • 企业其他应付款减少说明什么
  • 老板买私人飞机可以避税吗
  • 增值税加计抵减企业所得税如何处理
  • 老板借给公司钱需要交税吗
  • 建筑企业包工包料业务的发票开具和涉税处理
  • 自产自用的产品增值税怎么算
  • 营业外收入在汇算清缴里填哪张表
  • 开办费没发票如何做账?
  • 汽车销售企业的资产有哪些
  • 临时工工资怎么入账合法吗
  • 房地产开发企业资质管理规定
  • Linux系统下mysqlcheck修复数据库命令(详解)
  • mysql 大数据处理
  • ubuntu包管理命令
  • u盘装好系统后重启无法进入系统
  • 卸载软件后整个盘都清空了
  • windows7功能打不开怎么办
  • windows10周年更新
  • win10磁贴保存位置
  • android app启动过程
  • angularjs4
  • 简介怎么写
  • javascript如何定义函数
  • 21个JavaScript事件(Events)属性汇总
  • 基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
  • 创建android项目
  • 财税公众号名称大全
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设