React 組件的生命周期方法
按渲染順序:
1: UNSAFE_componentWillMount() – 在渲染之前執行,在客戶端和服務器端都會執行。
2: componentDidMount() – 僅在第一次渲染后在客戶端執行。
3: UNSAFE_componentWillReceiveProps()– 當從父類接收到 props 並且在調用另一個渲染器之前調用,父組件初始化的時候不會調用。一個常見的誤解是,當props“改變”時,getDerivedStateFromProps
和componentWillReceiveProps
才會被調用。事實上,只要父組件重新渲染,這些生命周期函數就會被調用,不管這些props是否與以前“不同”。
3: shouldComponentUpdate() – 根據特定條件返回 true 或 false。如果你希望更新組件,請返回true 否則返回 false。默認情況下,它返回 false。當這個方法返回false的時候,整個組件(類)都不會再執行(渲染)下去,所以最好在不會影響其他組件的組件里使用此方法。shouldComponentUpdate
最好作為性能優化使用,而不是為了確保派生狀態的正確性
4: UNSAFE_componentWillUpdate() – 在 DOM 中進行渲染之前調用。
5: componentDidUpdate() – 在渲染發生后立即調用。
6: componentWillUnmount() – 從 DOM 卸載組件后調用。用於清理內存空間。
7: getDerivedStateFromProps() - 在組件實例化以及接收新props
后調用。它可以返回一個對象來更新state
,或者返回null來表示新的props
不需要任何state
更新。 與componentDidUpdate
一起,這個新的生命周期應該覆蓋傳統componentWillReceiveProps
的所有用例。
8: getSnapshotBeforeUpdate() - 在更新之前被調用(例如,在DOM被更新之前)。此生命周期的返回值將作為第三個參數傳遞給componentDidUpdate
。 與componentDidUpdate
一起,這個新的生命周期將覆蓋舊版componentWillUpdate
的所有用例。
9: componentDidCatch(error, info) -
如果
render()
函數拋出錯誤,則會觸發該函數。
10: getDerivedStateFromError(
error
) - 此生命周期會在后代組件拋出錯誤后被調用。 它將拋出的錯誤作為參數,並返回一個值以更新 state