Vue框架的keep-alive 缓存机制
2019-08-20 21:33
1321 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43297527/article/details/99884217
Vue框架的keep-alive 缓存机制
利用Vue的keep-alive 缓存机制实现页面 "前进刷新,后退不刷新"效果
- 在 router 中将需要不刷新的页面 加上meta属性
{ path: '/index', component: index, meta: { keepAlive: true, isBack: false, } },
- 在 App.vue中 将需要缓存的页面加以判断
<keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"></router-view>
- 在index页面中添加路由守卫beforeRouteEnter 中判断当前页面是否为要缓存的页面
beforeRouteEnter(to, from, next) { // to: 为当前页面路由 // from: 为从那一个页面跳转过来的路由 if(to.name=='index '){ // 意思为,如果to的路由为 当前需要缓存页面的路由,就为 true, 需要缓存,即不刷新,false就不需要缓存,即刷新 to.meta.isBack=true; } next(); },
- keep-alive开始后,会多出 activated 和deactivated 两个钩子函数,切记 如果没开启 keep-alive 是不会执行这两个钩子函数的。利用activated钩子特性,将不需要缓存的页面关闭,即可实现前进刷新,后退不刷新
activated() { this.$route.meta.isBack=false },
所以我的代码为
// router { path: '/index', component: index, meta: { keepAlive: true, isBack: false, } }, // App.vue <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"></router-view> // index页面 beforeRouteEnter(to, from, next) { if(to.name=='index'){ to.meta.isBack=true; } next(); }, activated() { this.$route.meta.isBack=false },
- 需要特别注意的是:使用keep-alive和不使用keep-alive,生命周期钩子函数执行流程不一样。
关于keep-alive 的生命周期钩子函数
-
不使用keep-alive
=> 就是正常的生命周期钩子函数
=> created – mounted – updated – destroyed -
使用keep-alive但没有缓存页面的时候
=> beforeRouteEnter – created – mounted – activated – deactivated
// updated钩子函数也可以正常使用,数据改变时会继续触发updated
// beforeDestroy,destroyed 钩子函数将不执行 由deactivated钩子函数替代,如有销毁的实例可以放在 deactivated 钩子 -
使用keep-alive缓存页面的时候
=> beforeRouteEnter – activated – deactivated
Ps: 以上都是总结得出,可能会出现错误。请谨慎用之
// 一个月薪2500的狗头,只能记录+分享它的狗生了…
相关文章推荐
- 内置组件 && vue中强大的缓存机制之keep-alive
- vue缓存机制 keep-alive
- 使用vue的时候我们使用keep-alive会将页面缓存的解决方法
- vue 如何使某个组件不被 keep-alive 缓存
- vue 使某个组件不被 keep-alive 缓存的方法
- Vue2.0 keep-alive 后组件不使用缓存
- vue使用keep-alive缓存组件
- Vue利用keep-alive实现页面缓存
- Vue匿名组件使用keep-alive后动态清除缓存
- 示例vue 的keep-alive缓存功能的实现
- vue2.0 keep-alive实现缓存页面
- 详解vue服务端渲染浏览器端缓存(keep-alive)
- Vue keep-alive 缓存
- vue-router路由元信息及keep-alive组件级缓存
- vue服务端渲染浏览器端缓存(keep-alive)
- vue2.0 keep-alive 缓存页面数据 3ff0
- 详解keep-alive + vuex 让缓存的页面灵活起来
- Vue中使用Keep-Alive实现复杂页面缓存
- vue自动缓存keep-alive当前页面数据,包括选择框里面选择的内容或者搜索框选好的内容,用vue的activated更新最新的数据,更新返回的页面数据
- 示例vue 的keep-alive缓存功能的实现