keep-alive

 

keepalive是一个内置组件,里面的render方法会拿到它子组件节点中的的第一个,

 

然后缓存到一个对象中,

 

并且把

keep-alive_Vue2

vnode.data.keepAlive设为true

 

这里的vnode是指keep-alive包裹的子组件

 

最后把vnode返回来

所以keep-alive 实际渲染的是它第一个子节点

 

 

第二次再去渲染的时候,就直接从缓存里拿了

 

总结:

·keep-alive组件是一个内置抽象组件,它的实现通过自定义render函数并且利用了插槽

·keep-alive组件的渲染分为首次渲染和缓存渲染,

当命中缓存,则不会在执行created和mounted钩子函数,而会执行activated钩子函数。

销毁时也不会执行destroyed钩子函数,而会执行deactivated钩子函数

 对于已缓存的组件不会执行mounted ,但是提供了activated和deactivated函数