在组件实例被创建和插入DOM中被调用
- constructor()
类初始化调用,可用来初始化state
- static getDerivedStateFromProps(nextProps, prevState)
组件实例化后和接受新属性时将会调用getDerivedStateFromProps。
用于替换componentWillReceiveProps,可以用来控制 props 更新 state 的过程;
它返回一个对象表示新的 state;如果不需要更新,返回 null 即可。
注意,如果父组件导致了组件的重新渲染,即使属性没有更新,这一方法也会被调用。
如果你只想处理变化,你可能想去比较新旧值。
- componentWillMount()(将要废弃)
render前,所以setState不会重新渲染,服务端渲染唯一调用,推荐用constructor代替之
- render()
渲染jsx
- componentDidMount()
componentDidMount()在组件被装配后立即调用。
初始化使得DOM节点应该进行到这里。
若你需要从远端加载数据,这是一个适合实现网络请求的地方。
在该方法里设置状态将会触发重渲。
更新
- componentWillReceiveProps()(将要废弃)
已挂载组件接收到新props触发
- static getDerivedStateFormProps()
组件实例化后和接受新属性时将会调用getDerivedStateFromProps。
用于替换componentWillReceiveProps,可以用来控制 props 更新 state 的过程;
它返回一个对象表示新的 state;如果不需要更新,返回 null 即可。
注意,如果父组件导致了组件的重新渲染,即使属性没有更新,这一方法也会被调用。
如果你只想处理变化,你可能想去比较新旧值。
- shouldComponentUpdate(nextProps, nextState)
使用shouldComponentUpdate()以让React知道当前状态或属性的改变是否不影响组件的输出。
如果存在性能问题:请使用pureComponent代替component
除了为你提供了一个具有浅比较的shouldComponentUpdate方法,PureComponent和Component基本上完全相同。
当props或者state改变时,PureComponent将对props和state进行浅比较。
另一方面,Component不会比较当前和下个状态的props和state。
因此,每当shouldComponentUpdate被调用时,组件默认的会重新渲染。
- componentWillUpdate()(将要废弃)
组件改变之前执行
- getSnapshotBeforeUpdate(prevProps, prevState)
用于替换 componentWillUpdate,
该函数会在update后 DOM 更新前被调用,
用于读取最新的 DOM 数据,
返回值将作为 componentDidUpdate 的第三个参数
- componentDidUpdate(nextProps, nextState)
componentDidUpdate()会在更新发生后立即被调用
卸载
- componentWillUnmount()
卸载组件,可以用来清除计时器,解绑事件