广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Reactroutercacheroute实现缓存页面流程介绍
  • 585
分享到

Reactroutercacheroute实现缓存页面流程介绍

ReactroutercacherouteReactroutercacheroute缓存页面 2023-01-10 15:01:29 585人浏览 八月长安
摘要

目录一、背景二、参考方法三、React-router-cache-route的使用四、具体步骤一、背景 在开发中,从A页面跳转到other页面,再返回A页面时react-router

一、背景

开发中,从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的使用

就是把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

到此这篇关于React router cache route实现缓存页面流程介绍的文章就介绍到这了,更多相关React router cache route内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Reactroutercacheroute实现缓存页面流程介绍

本文链接: https://www.lsjlt.com/news/177305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Reactroutercacheroute实现缓存页面流程介绍
    目录一、背景二、参考方法三、react-router-cache-route的使用四、具体步骤一、背景 在开发中,从A页面跳转到other页面,再返回A页面时react-router...
    99+
    2023-01-10
    React router cache route React router cache route缓存页面
  • CSS页面布局和加载流程介绍
    这篇文章主要介绍“CSS页面布局和加载流程介绍”,在日常操作中,相信很多人在CSS页面布局和加载流程介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS页面布局和加载流程...
    99+
    2022-10-19
  • python绘图demo实现流程介绍
    目录前言实现读取数据绘图完整实现前言 冒个泡泡,好久没有冒泡泡了,那么今天的话就浅浅水一下博文吧。任务是这样的,将Excel当中的数据,把它放到咱们的matlpolitlib里面去画...
    99+
    2022-11-13
    python绘图 python绘图案例
  • Vue实现前端页面缓存的过程
    目录Vue前端页面缓存1.使用情景2.keep-alive基本认识3.keep-alive实现路由页面缓存vue页面缓存问题1.路由设置2.页面路由嵌套设置3.从指定页面返回使用缓存...
    99+
    2022-11-13
  • SpringBoot公共页面抽取方法实现过程介绍
    目录1. 需求描述2. 使用 thymeleaf 抽取公共页面方法3. insert与replace及include抽取公共页面的区别1. 需求描述 我们有这样一个页面,其具有左侧导...
    99+
    2022-11-13
  • vue实现页面缓存功能
    本文实例为大家分享了vue实现页面缓存功能的具体代码,供大家参考,具体内容如下 主要利用keep-alive实现从列表页跳转到详情页,然后点击返回时,页面缓存不用重新请求资源。 一、...
    99+
    2022-11-12
  • flutter实现切换页面缓存
    本文实例为大家分享了flutter实现切换页面缓存的具体代码,供大家参考,具体内容如下 一、实现底部导航栏切换页面缓存 实现底部导航栏切换页面缓存需要在pubspc.yamal中导入...
    99+
    2022-11-13
  • Vue页面缓存怎么实现
    这篇文章主要介绍“Vue页面缓存怎么实现”,在日常操作中,相信很多人在Vue页面缓存怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue页面缓存怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-06
  • 微信小程序实现页面缓存效果
    抱歉,我不能在该平台上提供具体的代码示例。但是我可以给你一些关于微信小程序实现页面缓存的一般指导和步骤,希望能帮到你。微信小程序是一种轻量级的应用程序,它需要快速加载和响应用户操作。页面缓存是一种优化技术,可以加快页面加载速度,提升用户体验...
    99+
    2023-11-21
    页面 缓存 微信小程序
  • SpringBoot异常错误页面实现方法介绍
    目录导言实现步骤加入thymeleaf依赖然后创建controller使用X进行模糊匹配统一错误页面显示导言 默认情况下,SpringBoot 项目错误页面如下: 直接这样太丑了...
    99+
    2022-11-13
  • Vue怎么实现前端页面缓存
    这篇“Vue怎么实现前端页面缓存”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue怎么实现前端页面缓存”文章吧。Vue前端...
    99+
    2023-07-02
  • JavaScript自定义Webpack配置实现流程介绍
    目录1 初始化并创建要被打包的文件2 命令行配置3 配置文件配置1 初始化并创建要被打包的文件 首先创建文件夹webpack-demo(随便起一个),用来演示打包过程。在该文件夹下终...
    99+
    2022-11-13
    JavaScript自定义Webpack JavaScript Webpack配置
  • SpringBootJWT接口验证实现流程详细介绍
    目录添加pom.xml修改配置文件创建简单的测试接口使用拦截器实现需求:只有用户登录成功后,才能访问其它接口,否则提示需要进行登录 项目仓库地址:https://gitee.com/...
    99+
    2022-11-13
  • vue3 keep-alive实现tab页面缓存功能
    先上图  如何在我们切换tab标签的时候,缓存标签最后操作的内容,简单来说就是每个标签页中设置的比如搜索条件及结果、分页、新增、编辑等数据在切换回来的时候还能保持原样。 ...
    99+
    2023-05-17
    vue3 keep-alive页面缓存 vue3 tab页面缓存
  • Flask表单与表单验证实现流程介绍
    目录表单介绍WTForms 和 Flask-WTF创建表单表单字段验证器表单介绍 说到表单,在HTML中表单的创建时通过<form>标签实现的,在<form>...
    99+
    2022-11-11
  • JavaJDBCAPI介绍与实现数据库连接池流程
    目录JDBC API详解DriverManagerConnection获取执行对象事务管理Statement概述代码演示ResultSet概述代码演示PreparedStatemen...
    99+
    2022-12-08
    Java JDBC API Java JDBC数据库连接池
  • Python实现将DNA序列存储为tfr文件并读取流程介绍
    最近导师让我跑模型,生物信息方向的,我一个学计算机的,好多东西都看不明白。现在的方向大致是,用深度学习的模型预测病毒感染人类的风险。 既然是病毒,就需要拿到它的DNA,也就是碱基序列...
    99+
    2022-11-11
  • SpringCloud使用Feign实现远程调用流程详细介绍
    目录前言1. 导入依赖坐标2. 开启Feign自动装配3. 声明远程调用4. 替代RestTemplate5. 测试前言 本次示例代码的文件结构如下图所示。 1. 导入依赖坐标 在...
    99+
    2023-02-15
    SpringCloud Feign远程调用 SpringCloud Feign
  • Python进制转换与反汇编实现流程介绍
    通过利用反汇编库,并使用python编写工具,读取PE结构中的基地址偏移地址,找到OEP并计算成FOA文件偏移,使用反汇编库对其进行反汇编,并从反汇编代码里查找事先准备好的ROP绕过...
    99+
    2022-11-11
  • JavaScript实现移动端短信验证码流程介绍
    目录实战效果演示实现原理代码部分HTMLJS实战效果演示 实现原理 准备: 一个输入框, 四个div小盒子 原理: 监听input输入框,分别让输入的四个数字展现在那四个小盒子里,...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作