react生命周期新
挂载期
constructor()构造函数。
getDerivedStateFromProps(props state)render方法之前调用,初始挂在后期更新都会被调用,它返回一个对象来更新state,返回null不更新,state的值在任何时候都取决于props。
render() 检查this.props和this.state的变化返回虚拟DOM,渲染页面。
componentDidMount 挂在后立即后调用,实例化请求的好地方,在这里可以请求网络数据,添加订阅等,调用setstate(),会触发额外渲染,在render两次渲染下也不会看到中间状态,谨慎使用该模式,会导致性能问题。
更新期
getDerivedStateFromProps(props state)render方法之前调用,初始挂在后期更新都会被调用,它返回一个对象来更新state,返回null不更新,state的值在任何时候都取决于props。
shouldComponentUpdate 返回一个布尔值。在组件接收到新的props或state时被调用。在初始化时或者使用forceUpdate时不被调用。根据返回值判断react组件是否受props或state更改的影响进行页面渲染,默认更改会渲染,并且在渲染之前被调用。
render() 检查this.props和this.state的变化返回虚拟DOM,渲染页面。
getSnapshotBeforeUpdate(prevprops prevstate) 最近一次渲染输出之前调用,在组建更改之前从DOM中捕获一些信息,返回值作为参数传给componentDidUpdate。
componentDidUpdate(prevprops prevstate snastate) 在组件完成更新后立即调用。在初始化时不会被调用。可直接调用setstate(),必许包裹在一个条件语句里,负责会导致死循环。
卸载期
componentWillUnmount() 在组件销毁之前调用,执行必要的清理操作,例如:timer、取消网络请求、订阅等。不可调用setstate(),因为在此生命周期不再渲染页面。