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 相关文章推荐
用js小类库获取浏览器的高度和宽度信息
Jan 15 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
Dec 17 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
Oct 25 Javascript
javascript scrollTop正解使用方法
Nov 14 Javascript
jQuery的each终止或跳过示例代码
Dec 12 Javascript
轮播的简单实现方法
Jul 28 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 Javascript
Vue开发中整合axios的文件整理
Apr 29 Javascript
Vue.js实现立体计算器
Feb 22 Javascript
JavaScript实现移动端弹窗后禁止滚动
May 25 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
Oct 09 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 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 access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
PHP生成plist数据的方法
2015/06/16 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
利用python求相邻数的方法示例
2017/08/18 Python
python让列表倒序输出的实例
2018/06/25 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
Python线程threading模块用法详解
2020/02/26 Python
python对一个数向上取整的实例方法
2020/06/18 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
大学生简历的个人自我评价
2013/12/04 职场文书
会计专业求职信
2014/08/10 职场文书
离职信范文
2015/06/23 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang
git stash(储藏)的用法总结
2022/06/25 Servers
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python