📜  什么是差异算法?

📅  最后修改于: 2022-05-13 01:56:51.308000             🧑  作者: Mango

什么是差异算法?

React 使用虚拟 DOM,它是 DOM 的轻量级版本。唯一的区别是能够像真实 DOM 一样编写屏幕,实际上每次重新渲染后都会创建一个新的虚拟 DOM。 DOM 以树状结构存储网站的组件。

React 中的 DOM 更新方式:

  • 第一次运行时,创建了虚拟 DOM 和真实 DOM 树
  • React 适用于可观察模式,因此,每当状态发生变化时,它都会更新虚拟 DOM 中的节点
  • 然后,react 将虚拟 DOM 与真实 DOM 进行比较并更新更改。这个过程称为和解。

React 基于以下假设使用称为 Diffing 算法的启发式算法进行协调:

  1. 不同类型的元素会产生不同的树
  2. 我们可以设置哪些元素是静态的,不需要检查。

React 检查根元素的变化,更新取决于根元素的类型,

  • 不同类型的元素:每当根中元素的类型发生变化时,react 将废弃旧树并构建新树,即完全重建树。
  • 相同类型的元素:当改变元素的类型相同时,React 会检查两个版本的属性,然后只更新有变化的节点,而树中没有任何变化。该组件将在下一个生命周期调用中更新。

注意:这就是为什么我们应该始终在元素中使用唯一键的原因,以便 React 可以轻松地确定元素的变化。