父触发子的渲染

来源:5-8 组件更新(2)

前端工程师666777888

2021-04-06

在执行vm._update()时,
以下是两个节点相同的情况:
1、两个节点相同则执行patchVnode
2、在patchVnode()中,如果两个节点都有children,则继续执行updateChildren()
3、在updateChildren()中遍历children节点,如果节点是组件vnode,再次执行patchVnode
4、在patchVnode中,如果是组件vnode,则执行hook的preupdate()钩子
5、在preupdate()中,根据组件上属性的变化,来改变子组件中相应数据的变化,进而触发子组件的render watcher。
6、达到改变父组件数据,触发子组件渲染的目的
____________________________________________
第5步是重点

写回答

1回答

ustbhuangyi

2021-04-07

第五步也不一定会触发子组件重新渲染,通常只有插槽和 prop 发生改变的时候才有可能触发子组件渲染。

2
0

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4986 学习 · 1038 问题

查看课程