详解关于Vue2.0路由开启keep-alive时需要注意的地方


Posted in Javascript onSeptember 18, 2018

Vue2.0 做应用必有的需求就是页面数据需要做缓存,不用每次进入页面都要把数据重新请求一遍,每次页面切换都有段等待数据相应时间,这个用户体验可想有多么蛋疼,所以页面缓存是必要的,啥时候需要更新页面数据呢?可以监听状态变化,或者是手动下拉刷新重新请求数据,酱紫,我想用户体验会做的更好。

keep-alive的作用以及好处

在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-alive来缓存组件,防止二次渲染,这样会大大的节省性能。

废话不多说直接上码,一般是在 src/App.vue 设置开启 keep-alive 实现页面数据缓存:

<template>
 <keep-alive>
  <router-view></router-view>
 </keep-alive>
</template>

列举几个常用的 hook 方法,如下:

export default {
 data() {
  return {
  
  }
 },
 created: function() {
  console.log("the hook of created is done!");
 },
 mounted: function() {
  console.log("the hook of mounted is done!");
 },
 activated: function() {
  console.log("the hook of activated is done!");
 },
 deactivated: function() {
  console.log("the hook of deactivated is done!");
 }
}

首次进来 hook 的触发顺序 created-> mounted-> activated,退出时触发 deactivated:

// 控制台打印结果
the hook of created is done!
the hook of mounted is done!
the hook of activated is done!
the hook of deactivated is done!

二次进来 hook 只触发 activated,退出时触发 deactivated:

// 控制台打印结果
the hook of activated is done!
the hook of deactivated is done!

所以这就是为什么有些人开启 keep-alive 之后,created 和 mounted 注册的 pageInt 方法不触发的原因了,因为 keep-alive 把它们屏蔽了,也就是把数据缓存起来,所以不再请求。

如果你的某些页面一定要实时请求,你可以直接在 activated 这个 hook 做 pageInt,就不要在 created 和 mounted 上面注册 pageInt 方法了。

还有你可以选择性 pageInt,比如监听状态变化,包括但不限于监听路由的变化,某参数的变化,某时间节点的变化等等。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript回车完美实现tab切换功能
Mar 13 Javascript
理解javascript中的原型和原型链
Jul 30 Javascript
利用jQuery和CSS将背景图片拉伸
Oct 16 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
Nov 11 Javascript
js简单设置与使用cookie的方法
Jan 22 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
Aug 26 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
Sep 20 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
Mar 17 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
解决循环中setTimeout执行顺序的问题
Jun 20 Javascript
深入理解Promise.all
Aug 08 Javascript
JavaScript中arguments的使用方法详解
Dec 20 Javascript
Vue中 key keep-alive的实现原理
Sep 18 #Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
Sep 18 #Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
Sep 18 #Javascript
vue服务端渲染添加缓存的方法
Sep 18 #Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
Sep 18 #Javascript
微信小程序开发之路由切换页面重定向问题
Sep 18 #Javascript
在小程序中使用canvas的方法示例
Sep 17 #Javascript
You might like
PHP分页显示制作详细讲解
2006/10/09 PHP
php计算一个文件大小的方法
2015/03/30 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
js 函数性能比较方法
2020/08/24 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
Python入门篇之面向对象
2014/10/20 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python装饰器练习题及答案
2019/11/01 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
Java中实现多态的机制
2015/08/09 面试题
大家检讨书5000字
2014/02/03 职场文书
小学校长个人总结
2015/03/03 职场文书
病假证明模板
2015/06/19 职场文书
《颐和园》教学反思
2016/02/19 职场文书