当:is的值变时,会执行组件的render,生成一个新的vnode。在patch过程中,patchVnode()里,遇到了自定义组件keep-alive,则执行hook的prePatch()钩子,获取keep-alive的子组件vnode,并重新渲染keep-alive组件,也就是执行keep-alive的render函数,会新生成一个新的vnode。会patch,keep-alive刚生成的这个新vnode,在createComponent()中,如果这个vnode的componentInstance存在了,在执行hook的init()时,则不执行mounte()了,会走另一条逻辑。在createComponent()中直接把dom插入文档中,插入完后,会处理一些一休的问题。
疑问点:component这个动态组件如何与A,B组件联系起来的,总感觉在第一次从A切换到B时,B组件会使用A组件的内容。总感觉无论:is如何改变,在执行keep-alive的render函数时,componentInstance永远都是component组件的,永远不会改变,还有那个key,我感觉key永远也是component组件的key,永远不会改变。
请老师帮我解答