主要用于保留组件状态或避免重新渲染。
actived: 在激活的时候的使用,第一次激活实在mounted之后执行
dectived:在失活的时候使用。
< keep-alive > 包裹动态组件时,会被缓存不活动的组件实例,而不是销毁它们。
< keep-alive > 是个抽象组件,它自身不会渲染一个DOM元素,也不会出现在组件的父组件链中。
当组件在< keep-alive >内切换,它的 activated 和 deactived 这两个生命周期钩子函数将会被对应执行。
- <component /> //需要缓存的组件
- <keep-alive include="a,b">
- <component :is="view">component>
- keep-alive>
- <keep-alive :include="/a|b/">
- <component :is="view">component>
- keep-alive>
- <keep-alive :include="['a', 'b']">
- <component :is="view">component>
- keep-alive>
- <keep-alive include="a,b">
- <component />
- keep-alive>
- -------------------------------------------
- 注意:我们知道 keep-alive 之后页面模板第一次初始化解析变成HTML片段后,
- 再次进入就不在重新解析而是读取内存中的数据,即,只有当数据变化时,
- 才使用VirtualDOM进行diff更新。
- 有需要的话,页面进入的数据获取应该在activated中也放一份。
- 数据下载完毕手动操作DOM的部分也应该在activated中执行才会生效。
-
- 所以,有需要的话,应该activated中留一份数据获取的代码,或者不要created部分,
- 直接将created中的代码转移到activated中。