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

  • 老师钉钉群里发的表格怎么填(老师钉钉群里发的文档怎么填)

    老师钉钉群里发的表格怎么填(老师钉钉群里发的文档怎么填)

  • excel除以符号怎么打(excel里除以符号)

    excel除以符号怎么打(excel里除以符号)

  • 苹果手机快手极速版签到入口在哪里(苹果手机快手极速版红包挂件隐藏了在哪开)

    苹果手机快手极速版签到入口在哪里(苹果手机快手极速版红包挂件隐藏了在哪开)

  • 手机为什么老显示请检查网络设置(手机为什么老显示关机重启)

    手机为什么老显示请检查网络设置(手机为什么老显示关机重启)

  • 手机视频音画不同步怎么调(手机视频音画不一致怎么处理)

    手机视频音画不同步怎么调(手机视频音画不一致怎么处理)

  • 华为手机怎么查询通话记录(华为手机怎么查使用了多长时间)

    华为手机怎么查询通话记录(华为手机怎么查使用了多长时间)

  • k30pro6+128和8+128区别(k30pro6+128和8+128的屏可以互换吗)

    k30pro6+128和8+128区别(k30pro6+128和8+128的屏可以互换吗)

  • 手机屏幕疏油层能补吗(手机屏幕疏油层没了怎么办)

    手机屏幕疏油层能补吗(手机屏幕疏油层没了怎么办)

  • 短视频变现的方式分别有什么(短视频变现的方向)

    短视频变现的方式分别有什么(短视频变现的方向)

  • 企业微信登录失败(企业微信登录失效是什么原因导致的)

    企业微信登录失败(企业微信登录失效是什么原因导致的)

  • cdytn00是华为什么型号(cdyanoo是华为什么型号)

    cdytn00是华为什么型号(cdyanoo是华为什么型号)

  • 华为驾驶模式在哪里(华为驾驶模式什么意思)

    华为驾驶模式在哪里(华为驾驶模式什么意思)

  • 无端子外部接线是什么意思(无端子外部接线套什么清单)

    无端子外部接线是什么意思(无端子外部接线套什么清单)

  • 怎么录视频里面的声音(视频时怎么录视频)

    怎么录视频里面的声音(视频时怎么录视频)

  • 抖音保存的视频找不到(抖音保存的视频没有声音)

    抖音保存的视频找不到(抖音保存的视频没有声音)

  • 微信如何发布视频号(微信如何发布视频到朋友圈)

    微信如何发布视频号(微信如何发布视频到朋友圈)

  • 联通大王卡优酷免流吗(腾讯大王卡免流量)

    联通大王卡优酷免流吗(腾讯大王卡免流量)

  • 华为mate30是双扬声器吗(华为mate30支持双扬声器吗?)

    华为mate30是双扬声器吗(华为mate30支持双扬声器吗?)

  • pr如何添加转场特效(pr软件如何添加转场)

    pr如何添加转场特效(pr软件如何添加转场)

  • 火山粉丝团怎么设置(火山粉丝团怎么腿)

    火山粉丝团怎么设置(火山粉丝团怎么腿)

  • 网易考拉如何看自己的收藏记录(网易考拉怎么看消费账单)

    网易考拉如何看自己的收藏记录(网易考拉怎么看消费账单)

  • 小米8有红外遥控吗(小米8红外遥控器怎么用)

    小米8有红外遥控吗(小米8红外遥控器怎么用)

  • 音悦台如何关闭弹幕(音悦台怎么下架了)

    音悦台如何关闭弹幕(音悦台怎么下架了)

  • 无线快充原理(手机无线充电原理)

    无线快充原理(手机无线充电原理)

  • 怎么算固定资产
  • 资产负债表怎么填
  • 百旺税控盘自己用不了
  • 赠送货物怎么入账
  • 报税界面
  • 其他综合收益科目性质
  • 成本模式的投资性房地产折旧计入什么
  • 给客户提供的价值
  • 债转股资金
  • 增值税普通发票需要交税吗
  • 转账支票需要哪些资料
  • 企业职工福利费标准是什么
  • 补缴社保的工资表
  • 单位聘请临时工工资怎么报税
  • 费用报销单与付款申请单的用处区别
  • 固定资产不动产和动产的区别
  • 主营业务收入会计英语
  • 农产品加工所得税
  • 增值税的特殊销售方式有哪些?税务处理时怎样的?
  • 推广费属于什么科目
  • 支付工程款需要什么财务手续
  • 西方会计要素有哪些
  • 支付临时工工资计入什么科目
  • win10开始菜单失效如何解决
  • 房地产企业集团内部间的担保费可以税前扣除嚒
  • 银行存款收款凭证属于什么凭证
  • PadExe.exe - PadExe是什么进程 有什么用
  • php和py
  • php生成csv文件
  • php基本操作
  • 前端开发csdn
  • 驼鹿穿过莫兰山了吗
  • wordpresscom
  • 长期待摊费用的摊销分录
  • 苏尼亚尼
  • node.js in action
  • 暂估金额与发票金额会影响什么信息
  • vue知识点汇总
  • vue路由跳转携带参数怎么接收
  • 一次性伤残就业补助金
  • phpcms建站流程
  • 工会经费是公司交还是个人交
  • 不动产简易征收增值税发票 可以抵扣
  • php显示当前时间
  • db2udb
  • 织梦图集的使用教程
  • phpcms怎么用
  • 发票没拿回来可以报销吗
  • 报销的注意事项
  • 税务师工作年限证明材料
  • 小企业会计准则适用于哪些企业
  • 国债利息收入的分录
  • 固定资产转移说明模板
  • 存量资金会计处理办法
  • 单位社保缴费收费标准
  • 资金结余率怎么算
  • 理财利息计入什么科目
  • 月末结转各项费用支出479000
  • 餐饮行业月末结转成本怎么算
  • 没有期初数据会怎么样
  • 数据库表的创建心得体会
  • mysql命令行配置
  • mac虚拟机安装win10教程
  • windowsxp
  • linux cp用法
  • wind8系统怎么清除所有东西 恢复出厂
  • vps可以安装虚拟机吗
  • linux运行级别有几种
  • node.js jquery
  • 批处理文件.bat
  • 批处理实例
  • node 多线程
  • 一块钱买的鱼多久换一次水
  • 中国移动怎么下载账单
  • 税务局房屋评估怎样做低
  • 代收国税地税收入
  • 税务投诉回访电话号码
  • 农产品核定管理办法最新
  • 南京税务局几点下班
  • 白酒消费税怎么计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设