我一直在尝试理解反应协调,并且对差异算法如何工作的一些细节感到非常困惑。到目前为止,我了解到每当进行更新时,我们都会创建一个新的反应元素树并将其与我们之前的反应元素树进行比较。diffing 算法管理查找新旧反应元素树之间的差异。算法的 2 个假设。是相同级别和类型的元素不需要卸载和重新安装,并且键提供了一种不通过索引识别子元素的方法。
让我困惑的部分是如何在 2 个反应实例之间进行比较。例如,<Comp1/>
在旧的 React 元素树和<Comp2/>
新的 React 元素树中进行比较时(假设在创建新树时<Comp2>
被替换<Comp1>
),差异算法是否只是比较两个 React 元素的“类型”属性?因此,如果两者具有相同的“类型”,那么差异算法不会考虑卸载和安装到 DOM 中?