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

  • 抖音里的通讯录好友不见了去哪里找(抖音里的通讯录在哪里找?)

    抖音里的通讯录好友不见了去哪里找(抖音里的通讯录在哪里找?)

  • 快手直播时候一会暗一会亮(为什么快手直播一半中断)

    快手直播时候一会暗一会亮(为什么快手直播一半中断)

  • 拼多多在哪里上市的(拼多多上货软件哪个好用)

    拼多多在哪里上市的(拼多多上货软件哪个好用)

  • 快手创作者服务中心是什么(快手创作者服务中心怎么开通)

    快手创作者服务中心是什么(快手创作者服务中心怎么开通)

  • soul软件头像的绿点是什么意思啊(soul app头像)

    soul软件头像的绿点是什么意思啊(soul app头像)

  • 天猫精灵反应迟钝怎么办(天猫精灵反应慢是什么原因)

    天猫精灵反应迟钝怎么办(天猫精灵反应慢是什么原因)

  • iphone6plus怎么隐藏应用(iphone6plus怎么隐藏app)

    iphone6plus怎么隐藏应用(iphone6plus怎么隐藏app)

  • 苹果散热器在哪里(苹果散热器哪种好)

    苹果散热器在哪里(苹果散热器哪种好)

  • 手机突然没有4g信号怎么回事(手机突然没有4g网络 但是可以打电话)

    手机突然没有4g信号怎么回事(手机突然没有4g网络 但是可以打电话)

  • 格力手机一直卡在开机画面(格力手机为什么这么卡)

    格力手机一直卡在开机画面(格力手机为什么这么卡)

  • 淘宝资质什么意思(淘宝资质什么意思10000)

    淘宝资质什么意思(淘宝资质什么意思10000)

  • 步步高座机怎么调音量(步步高座机怎么查来电记录)

    步步高座机怎么调音量(步步高座机怎么查来电记录)

  • 抖音怎么图片评论(抖音怎么图片评论苹果)

    抖音怎么图片评论(抖音怎么图片评论苹果)

  • qq多久不刷会显示离线(qq多久不玩会自动注销)

    qq多久不刷会显示离线(qq多久不玩会自动注销)

  • 云充吧可以跨省异地还吗(云充吧可以异地归还吗)

    云充吧可以跨省异地还吗(云充吧可以异地归还吗)

  • opporeno3pro与荣耀v30pro的区别(opporeno3pro与荣耀30)

    opporeno3pro与荣耀v30pro的区别(opporeno3pro与荣耀30)

  • 如何让酷狗歌词在手机桌面(如何让酷狗歌词显示在手机桌面)

    如何让酷狗歌词在手机桌面(如何让酷狗歌词显示在手机桌面)

  • 抖音举报别人的作品会被对方看见吗(抖音举报别人的评论,成功评论能删掉吗)

    抖音举报别人的作品会被对方看见吗(抖音举报别人的评论,成功评论能删掉吗)

  • wo27s光纤猫是千兆吗(光纤猫是千兆的吗)

    wo27s光纤猫是千兆吗(光纤猫是千兆的吗)

  • 一斤cpu能出多少金子(一斤cpu大概多少个)

    一斤cpu能出多少金子(一斤cpu大概多少个)

  • 手机膜怎么贴1和2(手机膜怎么贴1和2包)

    手机膜怎么贴1和2(手机膜怎么贴1和2包)

  • 苹果怎么不用wifi下载(苹果怎么不用wifi备份)

    苹果怎么不用wifi下载(苹果怎么不用wifi备份)

  • Windows 10时钟图标不见了怎么办(windows10自带桌面时钟)

    Windows 10时钟图标不见了怎么办(windows10自带桌面时钟)

  • SSDP Discovery Service 是什么可以禁用吗

    SSDP Discovery Service 是什么可以禁用吗

  • 将vue项目打包成电脑端应用.exe(vue打包成一个文件)

    将vue项目打包成电脑端应用.exe(vue打包成一个文件)

  • 第十四届中国大学生创新创业大赛(第十四届中国大学生数学竞赛)

    第十四届中国大学生创新创业大赛(第十四届中国大学生数学竞赛)

  • passwd命令  修改用户的密码值(passwd -s命令)

    passwd命令 修改用户的密码值(passwd -s命令)

  • JSP的页面结构学习笔记(jsp页面构成)

    JSP的页面结构学习笔记(jsp页面构成)

  • 学习笔记——Servlet

    学习笔记——Servlet

  • 计提企业所得税分录
  • 车船使用税怎么网上缴费
  • 递延所得税费用在资产负债表哪一项
  • 违约金的专票能抵扣吗
  • 赞助支出和广告支出的区别
  • 现代服务包含哪些服务
  • 个税全员全额扣缴申报指什么
  • 结转折旧费用是自动结转的吗
  • 百旺购货方红字信息表怎么开具
  • 去年开的专票今年可以作废吗
  • 纸质银行承兑到期多久时间之内可以兑现
  • 租车费属于办公费吗
  • 会计凭证填制错误怎么办
  • 经济法中企业营业收入包括哪些?
  • 未认证发票进项税分录
  • 国税和地税分别占多少
  • 公户买理财产品怎么做账
  • 外包业务账务处理
  • 进项税转出如何做分录
  • 打印的行程单可以删除吗
  • 预收款项确认主营业务收入谨慎性
  • php中数组的常用函数及用法
  • win7安装netframework4.5
  • 月末账务结转
  • 以专利权出资,能否使用专利权
  • 电脑avc是什么意思
  • 工程项目科目如何设置
  • 银行进账单是银行开吗
  • 分页page
  • uni-app实例教程
  • php oracle 连接池
  • 无形资产有进项税吗
  • 一站式自动化测试平台如何滑动
  • echarts y轴设置
  • php微信公众号开源框架
  • 可转债公允价值变动计入
  • 如何处理经营租赁合同
  • 营业税改增值税的背景
  • 完整的css代码案例
  • Sqlite 常用函数 推荐
  • 对企业发票的监管
  • 企业哪些进项税抵扣
  • 医院如何开票
  • 个人独资企业法主要内容
  • 转增资本需要交税吗
  • 事业单位出售废品流程
  • 现金折扣可以扣除吗
  • excel账务处理心得
  • 内含增长率的推导
  • 暂估收入的会计分录怎么写
  • 其他货币资金科目主要指
  • 增值税留抵情况下要交流转税吗
  • 企业资金如何运动
  • 所得税费用的核算方法叫
  • 发票优惠金额怎么开
  • 工业用电交税怎么算
  • 公司开业两年后辞职
  • 办公用品的发票可以抵扣吗
  • 如何判断应当预见
  • 当月发生的费用下月支付
  • 教育机构的咨询
  • 固定资产净额是什么意思
  • 应收账款余额等于什么?
  • 年度利润总额怎么填
  • 企业成立第二年有补贴吗
  • win7自带xp虚拟机怎么安装驱动
  • 逐一介绍班子成员表现
  • nodejs assert
  • jquery代码实现鼠标点击
  • js的设计模式有哪些
  • js 实现ajax
  • android原生框架
  • python 数据类型
  • 酒店会场出租如何收费
  • 杭州市国税稽查三科科长
  • 文化事业建设税减免政策2023
  • 如何找回电子税务局企业密码
  • 陕西省国家税务总局班子成员
  • 所属税务局怎么填写
  • 税务备案表的有效期
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设