详解关于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 相关文章推荐
Jquery 获取checkbox的checked问题
Nov 16 Javascript
jquery实现下拉框功能效果【实例代码】
May 06 Javascript
AngularJS基础 ng-include 指令简单示例
Aug 01 Javascript
微信小程序-滚动消息通知的实例代码
Aug 03 Javascript
利用jqgrid实现上移下移单元格功能
Nov 07 Javascript
React父子组件间的传值的方法
Nov 13 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 10 Javascript
JS严格模式原理与用法实例分析
Apr 27 Javascript
webpack安装配置与常见使用过程详解(结合vue)
Jun 01 Javascript
Vue中key的作用示例代码详解
Jun 10 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
Sep 21 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
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
js验证密码强度解析
2020/03/18 Javascript
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
六道php面试题附答案
2014/06/05 面试题
房地产推广策划方案
2014/05/19 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
相亲活动方案
2014/08/26 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
期末复习计划
2015/01/19 职场文书
活动费用申请报告
2015/05/15 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书