keep-Alive搭配vue-router实现缓存页面效果的示例代码


Posted in Javascript onJune 24, 2020

Vue工程中有些页面需要有缓存。这个功能通过keep-alive组件实现,keep-alive组件可以使被包含的组件保留状态,或避免重新渲染。

在routes.js中定义路由,在路由中定义元信息(meta字段),需要缓存的页面就需要在meta对象中定义一个字段,这里设置为keepAlive,设置为true,反之,则不缓存。

{
  path: '/a',
  component: () => import('@/pages/A'),
  meta: {
   title:'A',
   keepAlive: true
  }
},
{
  path: '/b',
  component: () => import('@/pages/B'),
  meta: {
   title:'B',
   keepAlive: true
  }
},
{
  path: '/c',
  component: () => import('@/pages/C'),
  meta: {
   title:'C',
   keepAlive: true
  }
}

然后修改App.vue页面

<template>
 <div id="app">
  <!-- <router-view v-if="isRouterAlive"></router-view> -->
  <keep-alive>
   <router-view v-if="$route.meta.keepAlive"></router-view>
  </keep-alive>
  <router-view v-if="!$route.meta.keepAlive"></router-view>
 </div>
</template>

这样就可以实现有目的的对页面进行缓存了。

但如果这时要实现从A页面进入B页面后,让A页面不缓存的话我们还需要搭配上路由钩子函数beforeRouteLeave()。

在A页面中这样写:

beforeRouteLeave(to, from, next) {
    // 设置下一个路由的 meta
    if(to.meta.title=="B"){
      from.meta.keepAlive = false; // 让B不缓存,即刷新
    }
    next();
}

用到keep-Alive,遇到的最多的一个问题就是怎么去掉这种缓存状态。就比如用户每一次进行新流程的操作的时候,这个时候页面还是缓存是不对的。

就比如,一个用户登录之后在某个缓存的页面上填了信息,如果这个用户注销了之后,按道理,这些信息是应该消失的,即恢复初始状态,但是这个时候不关闭页面标签(因为新开标签的话会使所有页面重新渲染),用户再次登录回去,还会发现之前的页面还是存在缓存的,即这个页面没有重新渲染。如果想要解决这个问题的话,就要提到activated和deactivated这两个特殊的生存周期函数了。但是需要注意的是,activated和deactivated这两个生存周期函数只存在于keep-Alive组件中。当一个keep-Alive组件缓存生效的时候,它不会触发平常我们熟悉的created()和mounted()这类生存周期函数,因此不会被重新渲染,所以,它的状态得以保留。但是我们可以通过这两个生存周期函数来更新页面。

先设置一个全局的标志符,类型为布尔值,代表是否为缓存状态,你可以把它存进vuex或者sessionStorage。(以下为存入sessionStorage为例)

在用户登录成功的时候设置为sessionStorage.setItem("keepAlive",false);然后在缓存页面中添加如下代码:

activated:function(){
    if(sessionStorage.getItem("keepAlive")=='false'){
      //进行初始化
    }else{
      //to do
    }
},

总结

到此这篇关于keep-Alive搭配vue-router实现缓存页面效果的示例代码的文章就介绍到这了,更多相关vue router实现缓存页面内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
鼠标移动到一张图片时变为另一张图片
Dec 05 Javascript
看了就知道什么是JSON
Dec 09 Javascript
javascript concat数组累加 示例
Sep 03 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
May 28 Javascript
使用jsonp完美解决跨域问题
Nov 27 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
Vue项目中设置背景图片方法
Feb 21 Javascript
详解Vue 动态组件与全局事件绑定总结
Nov 11 Javascript
面试题:react和vue的区别分析
Apr 08 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 Javascript
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
javascript实现前端成语点击验证
Jun 24 #Javascript
vue单文件组件无法获取$refs的问题
Jun 24 #Javascript
JS实现数据动态渲染的竖向步骤条
Jun 24 #Javascript
javascript实现评分功能
Jun 24 #Javascript
javascript实现移动端红包雨页面
Jun 23 #Javascript
JS实现canvas简单小画板功能
Jun 23 #Javascript
javascript+Canvas实现画板功能
Jun 23 #Javascript
You might like
php简单计算页面加载时间的方法
2015/06/19 PHP
JS调用CS里的带参方法实例
2013/08/01 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
javascript每日必学之继承
2016/02/23 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
小程序实现多选框功能
2018/10/30 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
利用Python演示数型数据结构的教程
2015/04/03 Python
Python递归函数定义与用法示例
2017/06/02 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
Python对excel的基本操作方法
2021/02/18 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
学生自我鉴定范文
2013/10/04 职场文书
应聘自荐书
2013/10/08 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书