React 簡單的虛擬DOM理解

2021-10-04 20:57:00 字數 1106 閱讀 7424

1、當元件的stateprops發生改變,元件的render函式會重新執行一次

根據 state,得到資料

根據 jsx,得到模板

資料 + 模板 結合,通過react.createelement()生成虛擬dom(js物件,用來描述真實的dom)——會消耗效能,但代價低

[

'div',,

['span',,

'one'

]]

用虛擬dom的結構生成真實的dom

"one"

>

>

onespan

>

div>

state 發生改變

資料 + 模板 結合,生成新的虛擬dom——極大地提公升了效能

[

'div',,

['span',,

'two'

]]

比較原始虛擬dom和新虛擬dom的區別

直接操作dom,改變差異的地方

2、diff演算法

同層比較:對於兩個dom tree只比較同一層次的節點,如果這一層有不同,則直接把此層所有的子節點刪除,用新虛擬dom的子節點代替

對於同一層級的element節點,diff提供了以下3種節點操作:

insert_markup 插入節點:對全新節點執行節點插入操作

move_exising 移動節點:元件新集合中有元件舊集合中的型別,且element可更新,即元件呼叫了receivecomponent,這時可以復用之前的dom,執行dom移動操作

remove_node 移除節點:此時有兩種情況:元件新集合中有元件舊集合中的型別,但對應的element不可更新、舊組建不在新集合裡面,這兩種情況需要執行節點刪除操作

所以原始和新虛擬dom相同的節點的key值保持相同很重要,能提高效能!!

key值不要用index作為值,可以用item作為值(item在刪除和新增中都不改變)

react(1) 虛擬DOM概念理解

虛擬dom virtual document object model 通過js操作頁面上的元素 input,tr 是框架中的概念,程式設計師用js物件來模擬頁面上的dom樹 實現dom元素的高效更新 如果要將乙個 按照某一列排序,我們是通過對 的物件陣列實現重新排序後,再將整個陣列重新渲染到頁面上...

React 中的虛擬DOM

react 的重新渲染,效能是很高的。因為它引入了虛擬dom的概念。呃,來看一下,render 函式渲染頁面的幾種做法。前兩步都是拿到state 資料 與 jsx模版。第一種就是比較樸素的方式。第二種方式雖然不用完全替換,但是也需要比對兩個dom。第三種是虛擬dom方式。虛擬dom 本質上就是 js...

react中的虛擬DOM

資料驅動原理 用虛擬dom 1.state資料 2.jsx模板 3.資料 模板相結合,生成虛擬dom 虛擬dom就是乙個js物件,用它來描述真實的dom div span hello 損耗了極小的效能 4.用虛擬dom的結構生成真實的domhello 5.state 發生變化 6.資料 模板 生成新...