React - 生命週期
React - 生命週期
前言
什麼是生命週期?就如同人有生老病死,React 組件也有類似的概念!
生命週期流程圖
初始化階段
由ReactDOM.render()
觸發,按順序初次渲染
- constructor()
- 初始化
- getDerivedStateFromProps
- 需使用靜態方法 static
- 可以接收參數
props
,state
- 需返回一個狀態對象 或
null
- render()
- 渲染
- componentDidMount()
- DOM 掛載完成
更新階段
由組件內部this.setState()
或父組件,重新render
渲染
- getDerivedStateFromProps
- 需使用靜態方法 static
- 可以接收參數
props
,state
- 需返回一個狀態對象 或
null
- shouldComponentUpdate()
- 判斷是否繼續更新
- render()
- 渲染
- getSnapshotBeforeUpdate
- 更新前執行
- 需返回一個值 或
null
- 返回的快照值會給
componentDidUpdate()
- componentDidUpdate()
- 更新完成
- 有三個參數
prevProps
,prevState
,snapshotValue
移除階段
由ReactDOM.unmountComponentAtNode()
觸發
- componentWillUnmount()
- 即將卸載
常用的三個生命週期
- render()
- 初始化渲染
- 更新渲染
- componentDidMount()
- 開啟監聽
- 發送 Ajax 請求
- componentWillUnmount()
- 做一些收尾的工作,如:清空定時器