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中Object和Function的关系小结
Sep 26 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
Mar 31 Javascript
CSS和Javascript简单复习资料
Jun 29 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
Nov 21 Javascript
JS、CSS加载中的小问题探讨
Nov 26 Javascript
js获取元素相对窗口位置的实现代码
Sep 28 Javascript
jqueryMobile使用示例分享
Jan 12 Javascript
Node.js实现数据推送
Apr 14 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
Apr 26 Javascript
Vue.js动态组件解析
Sep 09 Javascript
安装vue-cli报错 -4058 的解决方法
Oct 19 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
May 09 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中的三元运算符使用说明
2011/07/03 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
vue.js实现三级菜单效果
2019/10/19 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
Python实现的批量下载RFC文档
2015/03/10 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
python实现海螺图片的方法示例
2019/05/12 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Python中函数的返回值示例浅析
2019/08/28 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
Python pip 常用命令汇总
2020/10/19 Python
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
企业委托书范本
2014/09/13 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
2016春节家属慰问信
2015/03/25 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
vue打包时去掉所有的console.log
2022/04/10 Vue.js
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers