React 之 fiber


React 升級版本 fiber

React Fiber 會在 React16版本一起發佈,自開始,已經開發了2年左右。

爲什麼會有 fiber?

React v16版本以前的生命週期,從 componentWillMount -> componentDidUnMount,生命週期執行期間,作爲一個整體在執行的堆棧裏排隊並執行,執行期間,React不會停止,CPU會被一直佔用,自始至終執行完生命週期!
現在,舉一個例子,input標籤的 value 值,onchange監測存入到 state裏,state每次更新,整個組件會更新,包括該組件內的子組件,整個過程,如果組件太大,會造成渲染不出來。

change:()=>{
    this.setState({
        data:document.getElementById('xxx').value
    })
}

這僅僅是簡單的一個例子,fiber 能隨時在 componentWillUpdate() 生命週期之前跳出來,如果有需求是在更新到dom節點的 componentDidMount 之前做特殊處理,fiber 就順應而生了,

原理性解釋

Fiber 在組件作爲構造函數進入堆棧前,虛擬造了一個預處理堆棧,可以在這個地方,對組件的生命週期,進行預處理,全部設置完後纔會進入真正的堆棧內排隊

附屬資料:
Fiber 是什麼? https://zhuanlan.zhihu.com/p/26027085
Fiber 原作者解釋爲何Fiber https://github.com/acdlite/react-fiber-architecture
Fiber 實現的原理 https://github.com/xieyu/blog/blob/master/React/from-jsx-to-dom.md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章