详解关于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 相关文章推荐
农历与西历对照
Sep 06 Javascript
jQuery使用手册之三 CSS操作
Mar 24 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
jquery向上向下取整适合分页查询
Sep 06 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
Mar 05 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
May 03 Javascript
AngularJS ng-blur 指令详解及简单实例
Jul 30 Javascript
jquery做个日期选择适用于手机端示例
Jan 10 Javascript
Django+Vue.js搭建前后端分离项目的示例
Aug 07 Javascript
基于vue和react的spa进行按需加载的实现方法
Sep 29 Javascript
基于jQuery实现可编辑的表格
Dec 11 jQuery
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 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开启安全模式后禁用的函数集合
2011/06/26 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
如何运行Python程序的方法
2013/04/21 Python
python刷投票的脚本实现代码
2014/11/08 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
基于Django用户认证系统详解
2018/02/21 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python三大神器之fabric使用教程
2019/06/10 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
python如何保存文本文件
2020/06/07 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
高分子材料个人求职信范文
2013/09/25 职场文书
好学生评语大全
2014/05/05 职场文书
活动总结书
2014/05/08 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
三八妇女节主持词
2015/07/04 职场文书
Element实现动态表格的示例代码
2021/08/02 Javascript
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技