美文网首页前端开发那些事儿
组件的生命周期(旧)

组件的生命周期(旧)

作者: 转移到CSDN名字丹丹的小跟班 | 来源:发表于2021-03-14 10:37 被阅读0次

React v16.0前的生命周期

react生命周期(旧).png
旧的生命周期

react的生命周期可以简单分为四条线
1.初始化的一条线
constructor👉componentWillMount👉render👉componentDidMount👉componentWillUnmount

class Life extends React.Component {
  //组件挂载之前的钩子
  componentWillMount() {
    console.log('我是挂载之前--componentWillMount')
  }
   //组件挂载之后的钩子
  componentDidMount() {
    console.log('我是挂载之后--componentDidMount');
  }
  // 组件卸载之前
  componentWillUnmount() {
    console.log('我是卸载组件--componentWillUnmount')
  }
  render() {
    console.log('我是render')
    return <div>
      <button onClick={this.unmount}>卸载组件</button>
    </div>
  }
  unmount = () => {
    ReactDOM.unmountComponentAtNode(document.getElementById("root"))
  }
}

未点击按钮之前

点击按钮之前
点击按钮之后
击按钮之后
2.更新状态的一条线
shouldComponentUpdate👉componentWillUpdate👉render👉componentDidUpdate👉componentWillUnmount
//这里省略了卸载组件生命周期
class Life extends React.Component {
  constructor(props) {
    console.log('第一次调用--constructor')
    super(props)
    this.state = {
      num: 0
    }
  }
  //组件挂载之前的钩子
  componentWillMount() {
    console.log('我是挂载之前--componentWillMount')
  }
   //组件挂载之后的钩子
  componentDidMount() {
    console.log('我是挂载之后--componentDidMount');
  }
  // 是否准许组件更新
  shouldComponentUpdate() {
    console.log('我是控制更新的阀门--shouldComponentUpdate')
    return true
  }
  // 组件更新之前
  componentWillUpdate() {
    console.log('我是组件更新之前--componentWillUpdate');
  }
  // 组件更新之后
  componentDidUpdate() {
    console.log('我是组件更新之后--componentDidUpdate');
  }
  render() {
    console.log('我是render')
    return <div>
      <p>num: {this.state.num}</p>
      <button onClick={this.add}>点击按钮+1</button>
    </div>
  }
  add = () => {
    let {num} = this.state
    this.setState({num: num+1})
  }
}

点击按钮之前

点击按钮之前
点击按钮之后
点击按钮之后

3.强制更新状态的一条线(不会经过更新阀门)
componentWillUpdate👉render👉componentDidUpdate👉componentWillUnmount

//这里省略了卸载组件生命周期
class Life extends React.Component {
  constructor(props) {
    console.log('第一次调用--constructor')
    super(props)
  }
  //组件挂载之前的钩子
  componentWillMount() {
    console.log('我是挂载之前--componentWillMount')
  }
   //组件挂载之后的钩子
  componentDidMount() {
    console.log('我是挂载之后--componentDidMount');
  }
  // 是否准许组件更新
  shouldComponentUpdate() {
    console.log('我是控制更新的阀门--shouldComponentUpdate')
    return true
  }
  // 组件更新之前
  componentWillUpdate() {
    console.log('我是组件更新之前--componentWillUpdate');
  }
  // 组件更新之后
  componentDidUpdate() {
    console.log('我是组件更新之后--componentDidUpdate');
  }
  render() {
    console.log('我是render')
    return <div>
      <button onClick={this.force}>强制更新</button>
    </div>
  }
  force = () => {
    this.forceUpdate()
  }
}

按钮点击之前

按钮点击之前
按钮点击之后
按钮点击之后

4.props更新(第一次渲染除外,一般是父组件setState更新,导致子组件props更新,会触发shouldComponentUpdate生命周期函数)
componentWillReceiveProps👉shouldComponentUpdate👉componentWillUpdate👉render👉componentDidUpdate👉componentWillUnmount

//父组件
class Parent extends React.Component {
  constructor(props) {
    console.log("第一次调用--constructor");
    super(props);
    this.state = {num: 0};
  }
 
  render() {
    return (
      <div>
        <button onClick={this.add}> num+1 </button> <Son num={this.state.num}></Son>
      </div>
    );
  }
  add = () => {
    this.setState({num: this.state.num + 1})
  }
}
//子组件
class Son extends React.Component {
     //组件挂载之前的钩子
  componentWillMount() {
    console.log("我是挂载之前--componentWillMount");
  }
  //组件挂载之后的钩子
  componentDidMount() {
    console.log("我是挂载之后--componentDidMount");
  }
  // 是否准许组件更新
  shouldComponentUpdate() {
    console.log("我是控制更新的阀门--shouldComponentUpdate");
    return true;
  }
  // 组件更新之前
  componentWillUpdate() {
    console.log("我是组件更新之前--componentWillUpdate");
  }
  // 组件更新之后
  componentDidUpdate() {
    console.log("我是组件更新之后--componentDidUpdate");
  }
  componentWillReceiveProps() {
    console.log("我是父组件传的props改变触发的钩子--componentWillReceiveProps");
  }
  render() {
    console.log("我是render");
    return <label> {this.props.num} </label>;
  }
}

按钮点击之前

按钮点击之前

按钮点击之后
!

按钮点击之后

附上两张后面几次更新的生命周期图
React v16.3 的生命周期图

16.3 的生命周期图
React v16.4+ 的生命周期图
16.4+ 的生命周期图

相关文章

  • 组件的生命周期(旧)

    React v16.0前的生命周期 旧的生命周期 react的生命周期可以简单分为四条线1.初始化的一条线cons...

  • 1组件的生命周期

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

  • 进阶react.js

    组件生命周期 组件的生命周期有助于理解组件的运行方式,完成更复杂的组件功能、分析组件错误原因等组件的生命周期: 组...

  • Flutter 生命周期研究与应用

    Flutter 生命周期包括了组件的生命周期以及App的生命周期。 一、组件生命周期 一个flutter组件主要分...

  • React组件生命周期(旧)

    一、概念 在组件创建、组件属性更新、组件被销毁的过程中,总是伴随着各种各样的函数执行,这些在组件特定时期,被触发执...

  • 二、Lifecycle

    使用生命周期感知组件处理生命周期 生命周期感知组件可以在其他组件(例如 activity 和 fragment)的...

  • React总结

    [toc] 1.React组件生命周期 1.1 生命周期图 组件的生命周期的图如下: 具体可参考React 组件生...

  • 2、Android官方架构组件介绍之LifeCycle(一)

    Android官方架构组件介绍之LifeCycle 使用生命周期感知组件处理生命周期 支持生命周期的组件会响应另一...

  • React 生命周期

    React 生命周期 初始化周期 组件重新渲染生命周期 组件卸载生命周期

  • Vue3:组件的生命周期与数据共享

    1、组件的生命周期 1.1 组件运行的过程 运行过程 组件的生命周期指的是:组件从创建 -> 运行(渲染) -> ...

网友评论

    本文标题:组件的生命周期(旧)

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