# 3.哪些方法会触发 React 重新渲染?重新渲染 render 会做些什么?

# (1)哪些方法会触发 react 重新渲染?

  • setState()方法被调用(除了传入 null 的时候不会)
  • 父组件重新渲染
    • 只要父组件重新渲染了,即使传入子组件的 props 未发生变化,那么子组件也会重新渲染,进而触发 render

# (2)重新渲染 render 会做些什么?

会对新旧 VNode 进行对比,也就是我们所说的 Diff 算法。 对新旧两棵树进行一个深度优先遍历,这样每一个节点都会一个标记,在到深度遍历的时候,每遍历到一和个节点,就把该节点和新的节点树进行对比,如果有差异就放到一个对象里面 遍历差异对象,根据差异的类型,根据对应对规则更新 VNode

Last Updated: 6/3/2024, 1:08:34 AM