constructor()javascript
加載的時候調用一次,能夠初始化state複製代碼
getDefaultProps()java
設置默認的props,也能夠用dufaultProps設置組件的默認屬性。複製代碼
getInitialState()react
初始化state,能夠直接在constructor中定義this.state複製代碼
componentWillMount()算法
組件加載時只調用,之後組件更新不調用,整個生命週期只調用一次,此時能夠修改state複製代碼
render()sql
react最重要的步驟,建立虛擬dom,進行diff算法,更新dom樹都在此進行複製代碼
componentDidMount()bash
組件渲染以後調用,只調用一次複製代碼
componentWillReceivePorps(nextProps)dom
組件加載時不調用,組件接受新的props時調用複製代碼
shouldComponentUpdate(nextProps, nextState)函數
組件接收到新的props或者state時調用,return true就會更新dom(使用diff算法更新),return false能阻止更新(不調用render)複製代碼
componentWillUpdata(nextProps, nextState)ui
組件加載時不調用,只有在組件將要更新時才調用,此時能夠修改state複製代碼
render()this
react最重要的步驟,建立虛擬dom,進行diff算法,更新dom樹都在此進行複製代碼
componentDidUpdate()
組件加載時不調用,組件更新完成後調用複製代碼
componentWillUnmount()
組件渲染以後調用,只調用一次
複製代碼
import React, { Component } from 'react'
export default class OldReactComponent extends Component {
constructor(props) {
super(props)
// getDefaultProps:接收初始props
// getInitialState:初始化state
}
state = {
}
componentWillMount() { // 組件掛載前觸發
}
render() {
return (
<h2>Old React.Component</h2>
)
}
componentDidMount() { // 組件掛載後觸發
}
componentWillReceivePorps(nextProps) { // 接收到新的props時觸發
}
shouldComponentUpdate(nextProps, nextState) { // 組件Props或者state改變時觸發,true:更新,false:不更新
return true
}
componentWillUpdate(nextProps, nextState) { // 組件更新前觸發
}
componentDidUpdate() { // 組件更新後觸發
}
componentWillUnmount() { // 組件卸載時觸發
}
}複製代碼
constructor()
加載的時候調用一次,能夠初始化state複製代碼
static getDerivedStateFromProps(props, state)
組件每次被rerender的時候,包括在組件構建以後(虛擬dom以後,實際dom掛載以前),每次獲取新的props或state以後;每次接收新的props以後都會返回一個對象做爲新的state,返回null則說明不須要更新state;配合componentDidUpdate,能夠覆蓋componentWillReceiveProps的全部用法複製代碼
render()
react最重要的步驟,建立虛擬dom,進行diff算法,更新dom樹都在此進行複製代碼
componentDidMount()
組件渲染以後調用,只調用一次複製代碼
static getDerivedStateFromProps(props, state)
組件每次被rerender的時候,包括在組件構建以後(虛擬dom以後,實際dom掛載以前),每次獲取新的props或state以後;每次接收新的props以後都會返回一個對象做爲新的state,返回null則說明不須要更新state;配合componentDidUpdate,能夠覆蓋componentWillReceiveProps的全部用法複製代碼
shouldComponentUpdate(nextProps, nextState)
組件接收到新的props或者state時調用,return true就會更新dom(使用diff算法更新),return false能阻止更新(不調用render)複製代碼
render()
react最重要的步驟,建立虛擬dom,進行diff算法,更新dom樹都在此進行複製代碼
getSnapshotBeforeUpdate(prevProps, prevState)
觸發時間: update發生的時候,在render以後,在組件dom渲染以前;返回一個值,做爲componentDidUpdate的第三個參數;配合componentDidUpdate, 能夠覆蓋componentWillUpdate的全部用法複製代碼
componentDidUpdate()
組件加載時不調用,組件更新完成後調用複製代碼
組件渲染以後調用,只調用一次複製代碼
componentDidCatch(error,info)
任何一處的javascript報錯會觸發複製代碼
import React, { Component } from 'react'
export default class NewReactComponent extends Component {
constructor(props) {
super(props)
// getDefaultProps:接收初始props
// getInitialState:初始化state
}
state = {
}
static getDerivedStateFromProps(props, state) { // 組件每次被rerender的時候,包括在組件構建以後(虛擬dom以後,實際dom掛載以前),每次獲取新的props或state以後;;每次接收新的props以後都會返回一個對象做爲新的state,返回null則說明不須要更新state
return state
}
componentDidCatch(error, info) { // 獲取到javascript錯誤
}
render() {
return (
<h2>New React.Component</h2>
)
}
componentDidMount() { // 掛載後
}
shouldComponentUpdate(nextProps, nextState) { // 組件Props或者state改變時觸發,true:更新,false:不更新
return true
}
getSnapshotBeforeUpdate(prevProps, prevState) { // 組件更新前觸發
}
componentDidUpdate() { // 組件更新後觸發
}
componentWillUnmount() { // 組件卸載時觸發
}
}複製代碼
舊的生命週期
新的生命週期