1.keep-alive 的作用以及好处
在做电商有关的项目中, 当我们第一次进入列表页需要请求一下数据, 当我从列表页进入详情页, 详情页不缓存也需要请求下数据, 然后返回列表页, 这时候我们使用 keep-alive 来缓存组件, 防止二次渲染, 这样会大大的节省性能.
2.keep-alive 的基本用法
在 app.vue 中
- <!-- 缓存所有的页面 -->
- <keep-alive>
- <router-view v-if="$route.meta.keep_alive"></router-view>
- </keep-alive>
- <router-view v-if="!$route.meta.keep_alive"></router-view>
需要缓存的组件内容直接在 router 中添加:
- meta: {
- keepAlive: true // true 表示需要使用缓存 false 表示不需要被缓存
- }
3.keep-alive 的生命周期
当引入 keep-alive 的时候, 页面第一次进入, 钩子的触发顺序 created-> mounted-> activated, 退出时触发 deactivated. 当再次进入 (前进或者后退) 时, 只触发 activated.
下面看下 vue 中 keep-alive 的使用问题及解决方案
问题描述
在业务开发中, 会有路由跳转但是返回需要保留数据的场景; vue 中提供了 keep-alive 来处理
解决方案
返回 dom 不让其重新刷新, 在 vue-view 外面包一层, 当引入 keep-alive 的时候, 页面第一次进入, 钩子的触发顺序 created-> mounted-> activated, 退出时触发 deactivated. 当再次进入 (前进或者后退) 时, 只触发 activated.
事件挂载的方法等, 只执行一次的放在 mounted 中; 组件每次进去执行的方法放在 activated 中;
可以将 是否包裹 keep-alive 通过参数配置;
- <keep-alive>
- <router-view v-if="$route.meta.keepAlive" style="min-height:100%"></router-view>
- </keep-alive>
- <router-view v-if="!$route.meta.keepAlive" style="min-height:100%"></router-view>
- // 不需要刷新的路由配置里面配置 meta: {keepAlive: true}, 这个路由则显示在上面标签;
- // 需要刷新的路由配置里面配置 meta: {keepAlive: false}, 这个路由则显示在下面标签;
总结
以上所述是小编给大家介绍的 vue 中 keep-alive 的用法及问题描述, 希望对大家有所帮助, 如果大家有任何疑问请给我留言, 小编会及时回复大家的. 在此也非常感谢大家对脚本之家网站的支持!
来源: http://www.jb51.net/article/140188.htm