虚拟 DOM 到底存储在哪里?

pla*_*_ar 5 javascript google-chrome-devtools reactjs react-fiber

我已经折磨自己好几个小时了,却找不到答案。React 数据到底位于哪个对象/键下?我发现一个对象ReactRoot似乎存储了有关组件的所有信息,但我不知道它位于窗口(我猜?)对象中的位置。

它必须位于窗口对象下方的某个位置,对吧?

如果您拍摄内存快照并从列表中选择构造函数,chrome 将在(chrome 中的 $0ReactRoot )下创建对其的引用。$0

编辑

ReactRoot 的声明方式是否有可能导致其他对象无法访问它?这在js中怎么可能呢?React 没有得到浏览器的任何特殊待遇,不是吗?

Nik*_*Nik -4

有一个文档解释了DOM Level 1 的基本方法。另请参阅W3C 的 DOM Level 1 Core 规范

创建元素时,会创建该元素的新实例,但不会呈现。直到您将它们包含到 DOM 树中。

浏览器只会渲染文档正文中的元素。但其他一切都只是对象的实例,即虚拟 DOM。

// create a new Text node for the second paragraph
    var newText = document.createTextNode("This is the second paragraph.");
    // create a new Element to be the second paragraph
    var newElement = document.createElement("P");
Run Code Online (Sandbox Code Playgroud)

  • 这与 React 或它在内存中存储对象的位置无关。 (2认同)