diff算法特点

diff算法特点:

  同层对比:分为三种类型对比(虚拟DOM树对比、组件的对比、列表元素的对比)

  a. 虚拟DOM树的diff算法对比

    - 同城对比标签名称、标签属性、标签内容是否一致;不会跨层级对比

    - 如果虚拟DOM出现跨层级移动,React直接将旧层级删除,在新的节点下创建新的层级元素。不会复用旧的DOM层级

  b. 组件的diff算法对比(结合动态组件)

    - 如果在重复render()生成虚拟DOM时,组件没有发生变化,此时组件就相当于固定的DOM树了,只是封装了一个组件而已。参照DOM树的diff算法对比规则。

    - 如果组件是动态切换的,React直接放弃对比,哪怕两个组件的结构是一样的,直接将消失的组件溢出,出现的组件再创建新的组件DOM节点。(谁出现就创建谁,谁消失就销毁谁)

  c. 列表元素的diff算法对比

  - 没有key属性的时候,React对比新旧虚拟DOM时,会按照元素顺序对比元素内容是否发生变化,变化了就重新生成DOM。

  - 有key属性的时候,React对比新旧虚拟DOM时,会将两个key值相同的元素进行对比,看看元素内容是否变化,变化了就重新生成DOM。

posted @ 2022-06-30 21:59  asy123  阅读(68)  评论(0)    收藏  举报