赞助
import React, { Component } from 'react'


// 只有在类组件中才有生命周期
export default class App extends Component {

  // 组件初始化  只执行一次
  constructor(props) {
    super(props);
    console.log('constructor');
    this.state = {
      username: 'aaa'
    }
  }

  // 执行N次
  /* static getDerivedStateFromProps() {
    console.log('getDerivedStateFromProps');
    return {
      username: 'abc'
    }
  } */

  // 挂载完毕之前
  /*  UNSAFE_componentWillMount(){
     console.log('UNSAFE_componentWillMount');
   }
  */
  // 组件挂载完毕 只执行1次  一般AJAX写在此处
  componentDidMount() {
    console.log('componentDidMount');

    setTimeout(() => {
      this.setState({
        username: 'abc'
      })
    }, 3000);
  }

  // getDerivedStateFromProps 与 shouldComponentUpdate 只能有一个存在
  // 是否让组件进行渲染 true渲染 false不渲染  组件渲染优化
  shouldComponentUpdate(nextProps, nextState) {

    console.log(nextProps,nextState); // immutable
    if(nextState.username === this.state.username){
      return false;
    }

    return true;
  }




  render() {
    console.log('render');
    return (
      <div>

      </div>
    )
  }
}

 

posted on 2021-04-16 17:37  Tsunami黄嵩粟  阅读(63)  评论(0编辑  收藏  举报