react 生命周期

2019-05-10  本文已影响0人  STONEsh

react生命周期分为三个阶段:

1.初始化
2.更新
3.销毁
  • 1、getDefaultProps()
    设置默认的props,也可以用dufaultProps设置组件的默认属性.
  • 2、getInitialState()
    在使用es6的class语法时是没有这个钩子函数的,可以直接在constructor中定义this.state。此时可以访问this.props
  • 3、componentWillMount()
    组件初始化时只调用,以后组件更新不调用,整个生命周期只调用一次,此时可以修改state。
  • 4、render()
    1> react最重要的步骤,创建虚拟dom,进行diff算法,更新dom树都在此进行。此时就不能更改state了。
    2> 该方法会创建一个虚拟DOM,用来表示组件的输出。对于一个组件来讲,render方法是唯一一个必需的方法。render方法需要满足下面几点:
    **只能通过 this.props 和 this.state 访问数据(不能修改)
    **可以返回 null,false 或者任何React组件
    **只能出现一个顶级组件,不能返回一组元素
    **不能改变组件的状态
    **不能修改DOM的输出
    3> render方法返回的结果并不是真正的DOM元素,而是一个虚拟的表现,类似于一个DOM tree的结构的对象。react之所以效率高,就是这个原因。
  • 5、componentDidMount()
    组件渲染之后调用,只调用一次。
  • 1、componentWillReceiveProps(nextProps)
    组件初始化时不调用,组件接受新的props时调用。
  • 2、shouldComponentUpdate(nextProps, nextState)
    react性能优化非常重要的一环。组件接受新的state或者props时调用,我们可以设置在此对比前后两个props和state是否相同,如果相同则返回false阻止更新,因为相同的属性状态一定会生成相同的dom树,这样就不需要创造新的dom树和旧的dom树进行diff算法对比,节省大量性能,尤其是在dom结构复杂的时候
  • 3、componentWillUpdata(nextProps, nextState)
    组件初始化时不调用,只有在组件将要更新时才调用,此时可以修改state
  • 4、render()
    组件渲染
  • 5、componentDidUpdate()
    组件初始化时不调用,组件更新完成后调用,此时可以获取dom节点。
  • componentWillUnmount()
    组件将要卸载时调用,一些事件监听和定时器需要在此时清除。
上一篇下一篇

猜你喜欢

热点阅读