component组件与A,B组件的关系
来源:10-3 keep-alive(3)

前端工程师666777888
2021-05-05
当: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,永远不会改变。
请老师帮我解答
写回答
1回答
-
<component> 是动态组件,并非是一个真实的组件,在 _createElement 的过程中,它就会根据 is 动态绑定的值去渲染对应的真实组件了:
032021-05-05
相似问题