详解关于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文本框高亮显示插件代码
Apr 02 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
Sep 02 Javascript
jquery.post用法之type设置问题
Feb 24 Javascript
详解JavaScript编程中的数组结构
Oct 24 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
Oct 21 Javascript
详解百度百科目录导航树小插件
Jan 08 Javascript
详解如何使用Vue2做服务端渲染
Mar 29 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
Jul 20 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
Dec 14 Javascript
浅谈vue异步数据影响页面渲染
Oct 29 Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 Javascript
Vue基于localStorage存储信息代码实例
Nov 16 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
Python中django学习心得
2017/12/06 Python
python八大排序算法速度实例对比
2017/12/06 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
《要下雨了》教学反思
2014/02/17 职场文书
教师师德承诺书
2014/03/26 职场文书
公司委托书格式范文
2014/04/04 职场文书
离婚协议书格式
2015/01/26 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
《灰雀》教学反思
2016/02/19 职场文书