react生命周期

 

 组件生命周期的三个阶段

   Mounting(加载阶段)
   Updating(更新阶段)
   Unmounting(卸载阶段)

Mounting(加载阶段:涉及6个钩子函数)

constructor():加载的时候调用一次,可以初始化state

getDefaultProps():设置默认的props,也可以用dufaultProps设置组件的默认属性。

getInitialState():初始化state,可以直接在constructor中定义this.state

componentWillMount():在组件挂载到DOM前调用,且只会被调用一次,在这边调用this.setState不会引起组件重新渲染,也可以把写在这边的内容提前到constructor()中,所以项目中很少用。

render():react最重要的步骤,创建虚拟dom,进行diff算法,更新dom树都在此进行,注意:不要在render中修改state,会有改变组件状态的副作用,会导致死循环。

componentDidMount():组件挂载到DOM后调用,且只会被调用一次

Updating(更新阶段:涉及5个钩子函数)

componentWillReceivePorps(nextProps):在组件接收到一个新的 prop (更新后)时被调用。这个方法在初始化render时不会被调用。此方法只调用于props引起的组件更新过程中,参数nextProps是父组件传给当前组件的新props。但父组件render方法的调用不能保证重传给当前组件的props是有变化的,所以在此方法中根据nextProps和this.props来查明重传的props是否改变,以及如果改变了要执行啥,比如根据新的props调用this.setState出发当前组件的重新render。

shouldComponentUpdate(nextProps, nextState):组件接收到新的props或者state时调用,此方法通过比较nextProps,nextState及当前组件的this.props,this.state,返回true时当前组件将继续执行更新过程,返回false则当前组件更新停止,以此可用来减少组件的不必要渲染,优化组件性能。

componentWillUpdata(nextProps, nextState):组件加载时不调用,只有在组件将要更新时才调用,此时可以修改state。

render()

componentDidUpdate():组件加载时不调用,组件更新完成后调用。

Unmounting(卸载阶段:涉及1个钩子函数)

componentWillUnmount():组件渲染之后调用,只调用一次 

 

 

posted @ 2019-10-23 16:54  温柔的小猫  阅读(127)  评论(0编辑  收藏  举报