在后台反应虚拟Dom

Shu*_*ham 5 reactjs virtual-dom

我从消息源中了解到,如果我更新任何组件的状态,那么整个虚拟dom都会被渲染?是真的吗?如果是,那么为什么不调用所有组件的render方法?

另外,需要在以下几点进行说明-

  • 实际上是什么?有什么实际的例子吗?
  • 我假设如果将虚拟dom与实际dom进行比较,则虚拟dom花费的时间比真实dom少。但是如何实际证明呢?

  • react如何使用差异算法仅更新发生更改的各个组件(如果我使用setState方法)

任何视频讲座,将不胜感激。

Mat*_*ara 2

不,您所读到的内容是不正确的。

当您更新组件的状态时,这意味着您更改了虚拟 DOM 的一部分,您只会更改 React 虚拟 DOM 的特定部分,而不会更改其他任何内容。

所有其他组件都不会重新渲染。

对您的问题的回答:

  1. 虚拟 DOM 是纯 JavaScript 对象中实际 DOM 的表示。关于什么是虚拟 DOM 的全面详细信息可以在这个stackoverflow 问题和这篇 媒体文章中找到

  2. 就效率而言,操作真实的 DOM 确实是非常昂贵的。另一方面,虚拟 DOM 非常高效。以下几篇文章可以帮助您了解具体方法:CodecademyMedium 文章

  3. Codecademy解释了diffing 算法的工作原理,但您也可以阅读以下内容,以获取有关 React 官方文档中提到的算法的更多信息。

我相信我找到并在这里列出的文章足以理解虚拟 DOM 、虚拟 DOM 和真实 DOM之间的性能差异以及比较算法是如何工作的