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 相关文章推荐
Script的加载方法小结
Jan 12 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
Oct 04 Javascript
Extjs让combobox写起来简洁又漂亮
Jan 05 Javascript
在点击div中的p时,如何阻止事件冒泡
Feb 07 Javascript
微信小程序图片宽100%显示并且不变形
Jun 21 Javascript
node文件批量重命名的方法示例
Oct 23 Javascript
axios 处理 302 状态码的解决方法
Apr 10 Javascript
Vue.js单向绑定和双向绑定实例分析
Aug 14 Javascript
VSCode launch.json配置详细教程
Jun 18 Javascript
AJAX学习笔记
May 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
玩转虚拟域名◎+ .
2006/10/09 PHP
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
带你使用webpack快速构建web项目的方法
2020/11/12 Javascript
Mac 上切换Python多版本
2017/06/17 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
介绍一下Linux文件的记录形式
2012/04/18 面试题
EJB实例的生命周期
2016/10/28 面试题
外语系毕业生求职自荐信
2014/04/12 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
数学教师个人工作总结
2015/02/06 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL