一:keep-alive是什么?
keep-alive是vue内置组件,能够在组件切换过程中将状态保存在内存中,防止重复渲染DOM。
keep-alive包裹动态组件时,会缓存不活动的组件实例,而不是销毁。
keep-alive可以设置以下props属性:
- include 字符串或正则表达式,只有名称匹配的组件会被缓存
- exclude 字符串或正则表达式。任何名称匹配的组件都不会被缓存
- max-数据,最多可以缓存多少组件实例。
匹配首先检查组件自身的name选项,如果name选项不可用,则匹配它的局部注册名称,匿名组件不能被匹配。
生命周期:
首次进入组件时:beforeRouteEnter>beforeCreate>created>mounted>activated>...>beforeRouteLeave>deactivated
再次进入组件时:beforeRouteEnter>activated>...>beforeRouteLeave>deactivated
二:使用场景
使用原则:当我们在某些场景下不需要让页面重新加载的时候,可以使用
比如:首页--》列表页--〉商详页--》再返回。 从首页--》列表页--〉商详页--》返回到列表页(需要缓存)--》返回到首页(需要缓存)--》再次进入列表页(需要缓存)
三:缓存后如何获取数据
解决方案有以下两种:beforeRouteEnter,actived
注意:服务器端渲染期间actived不被调用