位置: 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)(今夕七夕)

  • 荣耀平板v7pro支持OTG吗(荣耀平板v7pro支持内存卡扩展吗)

    荣耀平板v7pro支持OTG吗(荣耀平板v7pro支持内存卡扩展吗)

  • 微信号搜索异常无法显示(微信号搜索异常无法显示是什么原因)

    微信号搜索异常无法显示(微信号搜索异常无法显示是什么原因)

  • 微信视频显脸大怎么调整(微信视频显脸大怎么设置)

    微信视频显脸大怎么调整(微信视频显脸大怎么设置)

  • 什么是压排屏幕(压排屏幕是什么意思啊)

    什么是压排屏幕(压排屏幕是什么意思啊)

  • 移动卡hd代表什么(移动卡显示hd1是什么意思)

    移动卡hd代表什么(移动卡显示hd1是什么意思)

  • 512固态够用吗(512固态够用吗玩游戏)

    512固态够用吗(512固态够用吗玩游戏)

  • 微信运动看不见对方了是什么原因(微信运动看不见了是不是被删好友了)

    微信运动看不见对方了是什么原因(微信运动看不见了是不是被删好友了)

  • 苹果xs max 屏幕太暗的原因(苹果xs max为啥屏幕一会亮一会暗)

    苹果xs max 屏幕太暗的原因(苹果xs max为啥屏幕一会亮一会暗)

  • i76700相当于i5几代(i76700相当于10代)

    i76700相当于i5几代(i76700相当于10代)

  • 微信号可以不绑定手机吗(一个微信号可以登录两个微信吗)

    微信号可以不绑定手机吗(一个微信号可以登录两个微信吗)

  • 苹果11怎么关闭听筒外放(苹果11怎么关闭app资源库页面)

    苹果11怎么关闭听筒外放(苹果11怎么关闭app资源库页面)

  • nova6机身尺寸(nova6机身尺寸多少厘米)

    nova6机身尺寸(nova6机身尺寸多少厘米)

  • 一个手机可以登几个微信(一个手机可以登录三个微信号吗)

    一个手机可以登几个微信(一个手机可以登录三个微信号吗)

  • 微信群举报成功后会对群主处理吗(微信群举报成功警告处理)

    微信群举报成功后会对群主处理吗(微信群举报成功警告处理)

  • cernet是什么网(cer网络用语啥意思)

    cernet是什么网(cer网络用语啥意思)

  • 什么导致淘气值下降(淘气值为什么会变低)

    什么导致淘气值下降(淘气值为什么会变低)

  • 快手保存别人视频对方知道吗(快手保存别人视频怎么去掉快手号)

    快手保存别人视频对方知道吗(快手保存别人视频怎么去掉快手号)

  • 免提声音小是怎么回事(免提声音小怎么办)

    免提声音小是怎么回事(免提声音小怎么办)

  • iphone11深色模式有什么用(iphone11深色模式和浅色模式哪个省电)

    iphone11深色模式有什么用(iphone11深色模式和浅色模式哪个省电)

  • 快手删掉的视频怎么找(快手删掉的视频怎么找回来)

    快手删掉的视频怎么找(快手删掉的视频怎么找回来)

  • vsco7天试用还还会扣费吗(vsco7天试用后)

    vsco7天试用还还会扣费吗(vsco7天试用后)

  • 韩版苹果11是双卡吗(韩版苹果11在用方面有什么不同)

    韩版苹果11是双卡吗(韩版苹果11在用方面有什么不同)

  • 苹果x进水后多久可充电(苹果x进水多少钱维修)

    苹果x进水后多久可充电(苹果x进水多少钱维修)

  • b站连续包月多久能取消(b站连续包月多少钱一个)

    b站连续包月多久能取消(b站连续包月多少钱一个)

  • 联想打印机清零(联想打印机清零怎么清)

    联想打印机清零(联想打印机清零怎么清)

  • 多模态模型学习1——CLIP对比学习 语言-图像预训练模型(什么是多模态研究)

    多模态模型学习1——CLIP对比学习 语言-图像预训练模型(什么是多模态研究)

  • 国税如何零申报
  • 一般纳税人优惠政策最新2022标准
  • 哪些占用土地的行为不征收耕地占用税?
  • 公司合同是公司员工个人名义签订如何入账?
  • 个体工商户个税怎么申报
  • 管道燃气工程设计方案
  • 外销收入确认原则有哪些
  • 营改增税负分析测算明细表一般由谁填写
  • 固定资产提折旧 账务处理
  • 餐饮加盟公司怎么经营
  • 收到的软件退税怎么处理
  • 销售产生的增值税
  • 公司委托其他公司为员工代缴社保公积金
  • 网络技术服务费 税率
  • 加油款可以开专用发票吗
  • 应交税费借方余额填列资产负债表
  • 个体户生产经营所得税减半征收
  • 固定资产被政府查封
  • 存出资本保证金属于什么科目
  • 失控发票一定要盖章吗
  • 企业接受个人捐赠
  • win7系统我的电脑图标不见了
  • 安卓系统详解
  • 制造费用主要包括哪些费用
  • 未取得发票入账违反什么规定
  • 会计分录有哪几种形式
  • 固定资产未提完折旧停止经营怎么处理
  • vue项目页面写在哪里
  • 石楠花 开花
  • framework core
  • php curl_init
  • php正则匹配中文
  • 人工智能机器人保姆什么时候实现
  • 出口货物应退增值税如何计算
  • ci框架视频教程
  • 土地测绘费计入管理费用明细科目吗
  • 滴滴打车老板起源故事
  • 织梦标签理解
  • centos7.9 防火墙
  • celery eventlet
  • sqlserver存储过程教程
  • 贷款计入什么科目
  • 主营业务收入的明细科目怎么写
  • 仪器校准费用会计科目
  • 商业承兑汇票托收什么意思
  • 企业购进货物暂欠货款
  • 其他人挂靠公司交社保会计处理怎么做?
  • 不偿还的其他应收款
  • 需要分摊的费用怎么做账
  • 企业的利润怎么提出来
  • 长期股权投资权益法账务处理
  • 科目怎么写?
  • 其它流动资产为负数原因
  • 调整去年管理费用怎么做分录
  • 会计做内账的技巧与方法
  • sql server数据库怎么使用
  • 扩展什么
  • macbookair触控板维修
  • 安装最新的Google应用
  • win7系统多久不动自动关机
  • win8的VPN连接报942错误(xp、win7下均可使用)
  • pavfires.exe - pavfires是什么进程 有什么用
  • linux系统获取ip地址
  • 在Linux系统中安装虚拟window
  • 开发环境配置是干嘛
  • nodejs发送http请求
  • react-redux用法
  • 项目总结之触摸问题分析
  • css border-bottom
  • bootstrap tree table
  • My Magic Android Tour —— 处女作
  • unity3d如何导入图片
  • shell if -lt
  • 国家税务总局广东省税务局待遇
  • 深圳市财政上交广东省吗
  • 光伏电站电力监控系统
  • 税务网上申报怎样操作
  • 重庆电子税务局怎么绑定办税人员
  • 原木进项税率
  • 土增税税负率一般多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设