請簡述 React 16 版本中 commit 階段的三個子階段分別做了什麼事情

1. before mutation階段 (操作 Dom 前)

`主要調用類組件生命週期函數getSnapshotBeforeUpdate,並且把舊的props和舊的states傳遞進去

2. mutation階段 (執行 Dom 操作)

`獲取對象的 effects, 根據不同的 effectTag 執行不同的操作

``插入節點:commitPlacement
``更新節點:commitWork
``刪除節點:commitDeletion

3. Layout 階段 (執行 Dom 操作後)

`調用類組件的生命週期

``初次渲染階段調用componentDidMount生命週期函數
``更新階段調用componentDidUpdate生命週期函數
``執行渲染完成之後的回調函數,也就是render函數的第三個參數,並且更改this指向,指向render方法的第一個參數

`調用函數組件的鉤子函數

``firstEffect:指向第一個更新的節點
``nextEffect:指向下一個更新的節點
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章