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

  • 税前扣除的项目包括
  • 税控盘白盘和黑盘一样吗
  • 应交印花税会计分录
  • 酒店维修费计入什么费用
  • 建筑业差额纳税怎么算
  • 增值税有定额税率吗
  • 人员新增申报表
  • 个人自产自销农产品免税政策
  • 专用发票抵扣联放在凭证中吗
  • 福利性收入属于什么分配
  • 收款收据是否可以做账
  • 收到去年所得税汇算清缴退税账务处理
  • 成品油发票长什么样
  • 一般纳税人设备租赁税率
  • 计提工资时需要附工资表吗
  • 非营利组织免税条件发生变化
  • 小规模人力资源服务费税率
  • 物流服务费税率是多少
  • 委托代销商品会计分录按成本还是售价
  • 贷款买车的利息是多少3年
  • linux进程操作命令
  • php ini
  • php如何实现
  • php面向对象的三大特征
  • php判断ua
  • 以专利权出资,能否使用专利权
  • 企业向个人提供咨询服务
  • 已领待用物资
  • 公司内部往来双向挂账
  • 计提的增值税可以扣除吗
  • 猿类作文
  • 【深度学习时间序列预测案例】零基础入门经典深度学习时间序列预测项目实战(附代码+数据集+原理介绍)
  • timedatectl命令用法
  • Yii基于CActiveForm的Ajax数据验证用法示例
  • 出口退税备案是代理的需要主办会计身份证复印件吗
  • 股权收购账务处理
  • 固定资产原值怎么确定
  • 购货方享受现金流量吗
  • 物业管理公司经营范围有哪些内容
  • 应收账款项目的金额公式
  • 运输公司燃油费占比
  • 个体工商户转企业政策
  • 增值税加计抵减怎么算
  • 茶叶企业所得税减免
  • 劳务合同如果不发工资怎么办
  • 应收账款入账价值包括现金折扣吗
  • 企业收到政府专项奖励
  • 返还的个税如何做分录
  • 未使用的固定资产计提折旧计入什么科目
  • 银行手续费在现金流量表怎么填
  • 工程维修款是从工程款中扣除吗
  • 赠送的产品价格为发票金额为零怎么入库
  • 没有发票的费用支出怎么入账
  • 公司不做账会怎样?
  • 建账的基本要求
  • sql server错误和使用情况报告
  • linux 添加swap
  • win10升级100完成不动
  • WIN XP下VMware Tools(虚拟机)安装的详细方法(图文教程)
  • win10在哪里更改用户名
  • excel打开csv文件数据有丢失
  • windows 10的回收站在哪里
  • make:arm-linux- conmand not found错误处理探讨
  • linux在u盘中运行
  • win7专用字符编辑程序的使用方法
  • 安装运行windows
  • c++11视频教程
  • unity安卓游戏开发
  • shell嵌套for循环
  • android 标签页
  • js 严格的迭代语句
  • jquery图片
  • android完整开源项目
  • 国税局调动
  • 支付宝怎么样开通刷脸支付
  • 天津普通发票查询平台
  • 税务异常处理
  • 2020年小规模纳税人普票免税政策
  • 山西省税务
  • 全国城管改革什么时候结束
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设