我从资料中了解到,如果我更新任何组件的状态,那么整个虚拟 dom将被渲染?是真的吗?如果是,那么为什么不调用所有组件的渲染方法?
另外,需要对以下几点进行澄清-
- Virtual Dom 实际上是什么?有什么实际的例子吗?
我假设如果我们将虚拟 dom 与实际 dom 进行比较,虚拟 dom 更新 dom 所需的时间比真实 dom 少。但是如何实际证明呢?
react 如何使用差异算法仅更新发生更改的各个组件(如果我使用 setState 方法)
任何视频讲座将不胜感激。
我从资料中了解到,如果我更新任何组件的状态,那么整个虚拟 dom将被渲染?是真的吗?如果是,那么为什么不调用所有组件的渲染方法?
另外,需要对以下几点进行澄清-
我假设如果我们将虚拟 dom 与实际 dom 进行比较,虚拟 dom 更新 dom 所需的时间比真实 dom 少。但是如何实际证明呢?
react 如何使用差异算法仅更新发生更改的各个组件(如果我使用 setState 方法)
任何视频讲座将不胜感激。
不,您阅读的内容不正确。
当您更新组件的状态时,意味着您更改了虚拟 DOM 的一部分,您将只更改 React 虚拟 DOM 的特定部分,而不是其他任何内容。
所有其他组件都不会重新渲染。
回答您的问题:
虚拟 DOM 是纯 JavaScript 对象中实际 DOM 的表示。关于什么是虚拟 DOM 的全面详细信息可以在这个stackoverflow 问题和这篇 中型文章中找到
就效率而言,操作真实的 DOM 确实非常昂贵。另一方面,虚拟 DOM 非常高效。这里有几篇文章可以帮助您了解如何:Codecademy和 Medium 文章
Codecademy解释了差异算法的工作原理,但您也可以阅读以下内容以获取有关React 官方文档中提到的算法的更多信息 。
我相信我在这里找到并列出的文章足以了解虚拟 DOM ,虚拟 DOM 和真实 DOM之间的性能差异以及diffing 算法是如何工作的
如果某个组件的 state 或者 props 发生了变化,那么这个组件和它的子组件就会被重新渲染,换句话说——所有这些组件的 render 方法都会被调用。如果你想知道为什么你的组件的渲染方法没有被调用,请插入你的代码片段。