React學習筆記 虛擬DOM

2021-09-20 02:41:07 字數 982 閱讀 8353

react對底層的**作了封裝,在大多數情況下,我們不需要直接去操作dom。但是有時候我們還是需要使用到底層的**的,比如輸入框獲取焦點,這個時候可以通過第三方的類庫或者react提供的api實現。

react之所以快,是因為它不直接操作dom。react將dom結構儲存在記憶體中,然後同render()的返回內容進行比較,計算出需要改動的地方,最後才反映到dom中。

此外,react實現了一套完整的事件合成機制,能夠保持事件冒泡的一致性,跨瀏覽器執行。甚至可以在ie8中使用html5的事件。

大部分情況下,我們都是在構建react的元件,也就是操作虛擬dom。但是有時候我們需要訪問底層的api,可能或通過使用第三方的外掛程式來實現我們的功能,如jquery。react也提供了介面讓我們操作底層api。

為了同瀏覽器互動,我們有時候需要獲取到真實的dom節點。我們可以通過呼叫react的react.finddomnode(component)獲取到元件中真實的dom。

react.finddomnode()只在mounted元件中呼叫,mounted元件就是已經渲染在瀏覽器dom結構中的元件。如果你在元件的render()方法中呼叫react.finddomnode()就會丟擲異常。

看官方的示例:

var mycomponent = react.createclass(,

render: function()

});react.render(

, document.getelementbyid('example')

);

元件的生命週期主要由三個部分組成:

react提供了方法,讓我們在元件狀態更新的時候呼叫,will標識狀態開始之前,did表示狀態完成後。例如componentwillmount就表示元件被插入dom之前。

React虛擬DOM轉換為真實DOM

按照上面的猜想,那麼render方法的作用就是 render方法接收兩個引數,第二個引數沒什麼好說的,固定寫法,第乙個引數有以下幾種情況 類元件函式元件 文字 數字 class extends component 然後再來處理函式元件,函式元件的寫法是,直接就返回了dom 對於文字 數字,直接新增到...

React 中的虛擬DOM

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

React 重溫之 虛擬DOM

虛擬dom可以說是現代前端庫的標配了,好像你乙個前端框架不實現乙個虛擬dom出門都不好意思跟人打招呼,那麼到底什麼是虛擬dom呢?那麼與之相對應的,我們可以簡單理解成虛擬dom就是用其他語言模擬出乙個dom的樹形結構 那麼問題來了,為什麼要用其它語言模擬dom,人家本來就已經是乙個很完整的樹形結構物...