v16.3+
- Mounting
- constructor(props)
- static getDerivedStateFromProps(props, state)
- render()
- componentDidMount()
- Updating
- static getDerivedStateFromProps()
- shouldComponentUpdate(nextProps, nextState)
- render()
- getSnapshotBeforeUpdate(prevProps, prevState)
- componentDidUpdate(prevProps, prevState, snapshot)
constructor(props)
React 组件的构造函数在安装之前被调用。在为 React.Component 子类实现构造函数时,应该在任何其他语句之前调用 super(props)
。
否则,this.props
将在构造函数中未定义,这可能导致错误。
Avoid copying props into state! This is a common mistake:
1 | constructor(props) { |
static getDerivedStateFromProps(nextProps, prevState)
props / state
改变时触发,需要返回一个对象或者 null
,相当于 setState
- demo
1 | static getDerivedStateFromProps(nextProps, prevState){ |
render()
1 | render(){ |
componentDidMount()
组件挂载后。
shouldComponentUpdate(nextProps, nextState)
1 | shouldComponentUpdate(nextProps, nextState) |
return true / false 来决定是否重新 render
getSnapshotBeforeUpdate(prevProps, prevState)
相当于 componentWillUpdate
componentDidUpdate(prevProps, prevState, snapshot)
更新后 - 这里谨慎使用 setState()
v16.3 以下
1 | import React, { Component } from 'react' |