vue 使某个组件不被 keep-alive 缓存的方法


Posted in Javascript onSeptember 21, 2018

提出问题

最近在做项目发现一个问题,当我使用了 keep-alive 标签后,进入了某个路由进行一系列操作,再点击浏览器后退,再次进入刚才的路由,页面被操作的数据没有初始化!

分析问题

这是因为 keep-alive 将路由页面缓存,所以该路由没有完成整个生命周期,没有 destroyed,因此重新进入也没有触发其他生命周期钩子,如 created 等。

解决问题

(1). 查看官方文档

当组件在 keep-alive 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

include - 字符串或正则表达式。只有匹配的组件会被缓存。

exclude - 字符串或正则表达式。任何匹配的组件都不会被缓存。

<!-- 逗号分隔字符串 -->
<keep-alive include="a,b">
 <component :is="view"></component>
</keep-alive>
<!-- 正则表达式 (使用 `v-bind`) -->
<keep-alive :include="/a|b/">
 <component :is="view"></component>
</keep-alive>
<!-- 数组 (使用 `v-bind`) -->
<keep-alive :include="['a', 'b']">
 <component :is="view"></component>
</keep-alive>

匹配首先检查组件自身的 name 选项,如果 name 选项不可用,则匹配它的局部注册名称 (父组件 components 选项的键值)。匿名组件不能被匹配。

(2). 监听路由变化

使用 watch 监听路由变化,但是我发现监听路由只有在组件被 keep-alive 包裹时才生效,未包裹时不生效,原因不明,理解的小伙伴请留言告诉我!

watch: {
 '$route' (to, from) {
   // 对路由变化作出响应...
  }
}

beforeRouteUpdate 这个钩子目前我发现还不能用,不知道哪里出错。

beforeRouteUpdate (to, from, next) {
  // react to route changes...
  // don't forget to call next()
 }

以上这篇vue 使某个组件不被 keep-alive 缓存的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript获得地址栏参数的两种方法
Nov 08 Javascript
js中将多个语句写成一个语句的两种方法小结
Dec 08 Javascript
关于document.cookie的使用javascript
Apr 11 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
Dec 24 Javascript
js调用图片隐藏&amp;显示实现代码
Sep 13 Javascript
基于jquery异步传输json数据格式实例代码
Nov 23 Javascript
jQuery中队列queue()函数的实例教程
May 03 Javascript
jquery实现自定义图片裁剪功能【推荐】
Mar 08 Javascript
JavaScript实现音乐自动切换和轮播
Nov 05 Javascript
Bootstrap 中data-[*] 属性的整理
Mar 13 Javascript
详解React 元素渲染
Jul 07 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 Javascript
解决vue keep-alive 数据更新的问题
Sep 21 #Javascript
vue axios基于常见业务场景的二次封装的实现
Sep 21 #Javascript
vue2使用keep-alive缓存多层列表页的方法
Sep 21 #Javascript
使用ng-packagr打包Angular的方法示例
Sep 21 #Javascript
基于vue中keep-alive缓存问题的解决方法
Sep 21 #Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
Sep 21 #Javascript
vue单页面应用打开新窗口显示跳转页面的实例
Sep 21 #Javascript
You might like
深入解析php模板技术原理【一】
2008/01/10 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
学习ExtJS Window常用方法
2009/10/07 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
javascript中的Function.prototye.bind
2015/06/25 Javascript
js实现图片360度旋转
2017/01/22 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
Python日期操作学习笔记
2008/10/07 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
北京振戎融通Java面试题
2015/09/03 面试题
大学辅导员事迹材料
2014/02/05 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
大学生读书笔记范文
2015/07/01 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android
i7 6700处理器相当于i5几代
2022/04/19 数码科技
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle