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

  • 税务行政复议是税务行政复议机关的裁决活动
  • 个税申报人员报送成功怎么删除
  • 建筑公司劳务分包抵扣分录
  • 出口免税不退税会计分录
  • 服装类发票可以做账吗
  • 以前年度损益调整
  • 工商银行资产负债表
  • 哪些小规模纳税人可以自行开具增值税
  • 什么情况下可以报警
  • 怎么设置存货科目
  • 个体工商户需要每个月报税吗
  • 活动现金红包
  • 不达起征点收到销售额如何作分录?
  • 贷款 保险费
  • 增值税免税收入计入什么科目
  • 培训机构开发票的税率是多少钱
  • 开具普通发票只写单位名称和税号可以吗?
  • 发票认证系统查不到发票
  • 关于小规模纳税人的说法错误的有
  • 分公司是独立法人企业吗
  • 咨询服务税费多少
  • 计提厂房租金怎么做账?
  • 电梯管理费属什么类别
  • 偿还借款利息是现金流量什么项目
  • 个人租赁汽车给公司怎么开发票
  • 金蝶k3外购入库核算没单据
  • 投资收益或亏损影响营业利润吗
  • 王者荣耀中廉颇是哪一个族的族长
  • 暂估成本跨年怎么处理分录
  • mac os x v10.10
  • 员工奖励股权
  • php数组函数,选班长
  • 实物折扣例题
  • php phyon
  • 非营利组织所得税申报
  • php 文件系统
  • php新手入门
  • 自然保护什么意思
  • 公司收到社保局的提醒函怎么办
  • 企业注销未抵扣完的进项税额怎么处理做账
  • 大前端需要掌握什么技能
  • 前端实战开发
  • 逐帧flash动画
  • 收到的赔款,罚款怎么算
  • 快递公司账务处理流程及方法总结
  • 总结帝国cms内容是什么
  • 售后租回融资租赁帐务处理怎么做?
  • 高新技术企业研发人员比例要求
  • db2 history
  • 自产货物用于抵偿债务
  • 营业总收入包含什么
  • 税收返还会计处理方法
  • 珠宝行业的会计
  • 科目余额表如何看
  • 进货没开发票,销货却开发票应怎么做帐?
  • 如何合理的运用网络
  • 年度计提资产减值准备 好还是坏
  • 小规模公司购买汽车如何抵税
  • 存在弃置费用的固定资产例题
  • 劳务派遣服务怎么做会计分录
  • mysql里的数据库在哪个位置
  • 自动保存怎么恢复
  • mac我的所有文件 删除
  • linux基金会什么时候成立
  • win7此电脑在哪里
  • win7不激活怎么换壁纸
  • kb3150220安装失败
  • computed缓存
  • js代码执行顺序简单介绍
  • 命令行批处理文件
  • 网页中经常用到的代码
  • 自定义图片制作软件
  • canvas+javascript
  • js实现聊天框
  • unity3d赛车游戏毕业设计
  • javascript函数如何定义及其作用
  • 土地增值税按什么价格
  • 耗电异常优化是什么意思微信
  • 销售税金含增值税怎么计算企业所得税
  • 外贸企业出口退税会计分录怎么做
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设