vue使某个组件不被keep-alive缓存的⽅法
提出问题
最近在做项⽬发现⼀个问题,当我使⽤了 keep-alive 标签后,进⼊了某个路由进⾏⼀系列操作,再点击浏览器后退,再次进⼊刚才的路由,页⾯被操作的数据没有初始化!
分析问题
这是因为 keep-alive 将路由页⾯缓存,所以该路由没有完成整个⽣命周期,没有 destroyed,因此重新进⼊也没有触发其他⽣命周期钩⼦,如 created 等。
解决问题
(1). 查看官⽅⽂档
当组件在 keep-alive 内被切换,它的 activated 和 deactivated 这两个⽣命周期钩⼦函数将会被对应执⾏。
include - 字符串或正则表达式。只有匹配的组件会被缓存。
exclude - 字符串或正则表达式。任何匹配的组件都不会被缓存。vue逗号分割的字符串转数组
<!-- 逗号分隔字符串 -->
<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
// don't forget to call next()
}
以上这篇vue 使某个组件不被 keep-alive 缓存的⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论