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的闭包
Dec 31 Javascript
页面回到顶部的三种实现(锚标记,js)
Oct 01 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
Jun 27 Javascript
浅谈JavaScript函数参数的可修改性问题
Dec 05 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
May 16 Javascript
浅谈JavaScript的闭包函数
Dec 08 Javascript
vue自定义filters过滤器
Apr 26 Javascript
微信小程序基于picker实现级联菜单
Feb 15 Javascript
浅谈webpack 四个核心概念之Entry
Jun 12 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
Nov 12 Javascript
JavaScript数组排序的六种常见算法总结
Aug 18 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中error与exception的区别及应用
2014/07/28 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
php实现记事本案例
2020/10/20 PHP
use jscript List Installed Software
2007/06/11 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
Angular路由简单学习
2016/12/26 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Python实现Kmeans聚类算法
2020/06/10 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
Python谱减法语音降噪实例
2019/12/18 Python
美国时尚在线:Showpo
2017/09/08 全球购物
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
.net面试题
2016/09/17 面试题
升职自荐书范文
2013/11/28 职场文书
小学生期末自我鉴定
2014/01/19 职场文书
红头文件任命书范本
2014/06/05 职场文书
工业设计专业自荐书
2014/06/05 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
戒赌保证书
2015/05/11 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
利用Python实时获取steam特惠游戏数据
2022/06/25 Python