美文网首页
1组件的生命周期

1组件的生命周期

作者: 易路先登 | 来源:发表于2020-03-26 20:06 被阅读0次

    组件的生命周期:组件从创建到销毁的过程称为组件的生命周期。
    组件的生命周期通常分为三个阶段:

    1. 组件的挂在阶段。
    2. 组件的更新阶段。
    3. 组件的卸载阶段。

    组件的挂在阶段

    组件在这个阶段被创建、初始化、挂在到DOM。包含四个周期函数:

    • constructor
    • componentWillMount
    • render
    • componentDidMount
      constructor:必须包含super(props),这个过程可以定义state的初始状态,可以执行事件函数的this绑定。
      componentWillMount: 组件挂载到DOM前调用,只会执行一次,且在其中使用this.setState不会引起组件的重新渲染,所以实际工作中很少用到,因为它里面所作的工作完全可以提升到constructor中去。
      render 必要函数,作用是根据组件的state和props返回一个React元素,它是一个纯函数,不能执行有任何副作用的操作,所以不能调用this.setState方法。
      componentDidMount组件被挂载到DOM后调用,只执行一次,能获取DOM结构,向服务器请求数据,在其中使用this.setState可以引起组件的重新渲染。

    更新阶段

    props和state(调用this.setState)的改变都会引起组件的更新。这个阶段包含5个生命周期函数:

    • componentWillReceiveProps
    • shouldComponentUpdate
    • componentWillUpdate
    • render
    • componentDidUpdate

    componentWillReceiveProps:这个方法只有在props引起的组件更新中才会被调用,this.setState引起的组件更新不会触发该方法。

    componentWillReceiveProps中调用的this.setState只有在render之后的生命周期才会指向新的state状态。

    shouldComponentUpdate(nextProps,nextState):这个方法返回true时组件会继续更新过程,返回false时组件会停止更新过程。
    componentWillUpdate(nextProps,nextState)组件render前调用执行。

    shouldComponentUpdate和componentWillUpdate中不能调用setState,否则会引起循环调用,render永远无法被调用,组件无法正常渲染。

    componentDidUpdate(prevProps,prevState)组件更新后被调用,prevProps、prevState代表更新前的props和state。

    卸载阶段

    组件从DOM上卸载,包含一个生命周期函数

    • componentWillUnmount
      清除组件中使用的计时器以及compoenentDidMount中手动创建的DOM等。

    相关文章

      网友评论

          本文标题:1组件的生命周期

          本文链接:https://www.haomeiwen.com/subject/woxhuhtx.html