Reactjs 虚拟Dom如何更快?最后,它将调用浏览器API来更新真正的DOM

Reactjs 虚拟Dom如何更快?最后,它将调用浏览器API来更新真正的DOM,reactjs,Reactjs,我通读了互联网上的所有文章。但我还是不明白,我的头脑一次又一次地困惑着我的问题 在所有虚拟DOM结束时,它将调用浏览器API来更新真正的DOM,那么它为什么会更快呢? React的虚拟DOM是否具有对浏览器核心API进行修改的特殊访问权限 我不明白?任何问题都可以解决,谢谢 在所有虚拟DOM结束时,它将调用浏览器API来更新真正的DOM,那么它为什么会更快呢 任何速度上的好处都来自于最小化所需的DOM操作的数量,并一次完成所有操作。虚拟DOM是react计算最小更改集的方法 下面是我计算最小更改

我通读了互联网上的所有文章。但我还是不明白,我的头脑一次又一次地困惑着我的问题

在所有虚拟DOM结束时,它将调用浏览器API来更新真正的DOM,那么它为什么会更快呢?

React的虚拟DOM是否具有对浏览器核心API进行修改的特殊访问权限

我不明白?任何问题都可以解决,谢谢

在所有虚拟DOM结束时,它将调用浏览器API来更新真正的DOM,那么它为什么会更快呢

任何速度上的好处都来自于最小化所需的DOM操作的数量,并一次完成所有操作。虚拟DOM是react计算最小更改集的方法

下面是我计算最小更改集的意思:页面从一个方向开始,然后你想让它从另一个方向看。要实现这一点,您需要对DOM进行一次或多次更改,但是有许多不同的方法可以做到这一点


更新页面的一个非常糟糕的方法是擦除整个文档,然后从头开始重建每个元素。最有可能的是,您可以重用大部分页面,只需对页面的某些部分进行一些更新:在此处添加一个div;在那里更新属性,在那里添加事件侦听器。这就是您想要的:一小部分步骤将旧页面转换为新页面。

是的,您是对的。最后,任务是更新真实dom,但虚拟dom在更新真实dom之前出现在图片中。怎么做

假设您想更新中的任意/多个元素,那么应该有一种机制来查找在真实dom(即我们看到的浏览器屏幕)中需要更新的元素

因此,这个dom查找算法在
虚拟dom
中执行,即
真实dom(html dom树)的javascript副本


React创建两个虚拟dom,一个来自现有的真实dom
,另一个来自所做的更改。这两个虚拟dom比较节省了时间用于更新真实dom的这种比较的不同之处

这里是React后面的两个家伙大约在2013年(v0.4.0)发表的一篇演讲。他们准确地描述了它的工作原理。与数据绑定和脏检查(角度检查等)不同,React使用一种递归调用的渲染方法。然后,它生成一个表示DOM的长字符串。这个概念其实很简单


虚拟DOM“更快”,因为它1)一次批处理所有DOM修改和访问,假设您使用适当的API,2)计算需要更改的内容的差异,添加和删除,因此理论上它修改DOM的效率比程序员手工编写修改更高。无论如何,我也将仅在需要更改的情况下调用DOM API,对吗?计算最小更改集?你能举个最好的例子吗?我觉得这个问题有点太宽泛了。React文档有一个页面,详细说明虚拟DOM(和对账)的工作方式。您应该阅读这些内容,以准确了解React@KumarRaj的工作原理。我添加了一个描述