React生命周期

react生命周期

image

class Counter extends React.Component {
  static defaultProps = {
    name:‘plus‘
  }
  constructor(props){
     super(props)
     this.state = {
       number:0
     }
     console.log(‘构造函数‘)
  }
  componentWillMount(){
    console.log(‘组件将要加载‘)
  }
  componentDidMount(){
    console.log(‘组件挂载完成‘)
  }
  handleClick = () => {
    this.setState({
      number:this.state.number+1
    })
  }
  shouldComponentUpdate(nextProps,nextState){
    console.log(‘组件是否更新‘)
    return nextState.number % 2
    ///如果此函数种返回了false 就不会调用render方法了
  }
  componentWillUpdate(){
    console.log(‘组件将要更新‘)
  }
  componentDidUpdate(){
    console.log(‘组件更新完成‘)
  }
  render(){
    console.log(‘render‘)
    return (
      <div>
        <p>{this.state.number}</p>
        {this.state.number > 3 ? null :<ChildCounter n={this.state.number}/>}
          <button onClick={this.handleClick}>+</button>
      </div>
    )
  }
}

class ChildCounter extends React.Component{
  componentWillUnMount(){
    console.log(‘组件将要卸载componentWillUnmount‘)
  }
  componentWillMount(){
    console.log(‘child componentWillMount‘)
  }
  render(){
    console.log(‘child-render‘)
    return (<div>
      {this.props.n}
    </div>)
  }
  componentDidMount(){
    console.log(‘child componentDidMount‘)
  }
  componentWillReceiveProps(newProps){ // 第一次不会执行,之后属性更新时才会执行
    console.log(‘child componentWillReceiveProps‘)
  }
  shouldComponentUpdate(nextProps,nextState){
    return nextProps.n % 3; //子组件判断接收的属性 是否满足更新条件 为true则更新
  }
}

ReactDOM.render(<Counter/>,document.getElementById(‘root‘))

相关文章

react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接...
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc ...