参考博客: https://segmentfault.com/a/1190000014979065

参考视频:https://www.bilibili.com/video/BV1Zt4y1i7d2?from=search&seid=2794796125273489545

 

问题:父组件包含子组件,当父组件刷新的时候, 会调用子组件的生命周期函数,包括会render一次,导致白白花时间在子组件上面,但是子组件啥都没有干。所以我们需要优化Component。

 

因此,生命周期函数 的阀门,shouldComponent()发挥作用啦、 介绍一下shouldComponent()。

1 返回值 true 函数生命周期继续向下,执行render。 返回值 false,函数生命周期停止,不进行渲染。

2 参数  nextProps和  nextState

this.props的value 和  nextProps 的value 进行对比!如果下次传来的值和这次的相同,那么就说明值没有改变,子组件不需要再刷新了,那么返回false。
 
那么PureComponent就是实现的这个功能。
 
import logo from './logo.svg';
import './App.css';
import React,{Component , PureComponent}  from 'react'

class Sub extends  PureComponent {
  // shouldComponentUpdate(nextProps,nextState){
 
  //   if(nextProps.name === this.props.name) {
  //     return false;
  //   } else {
  //     return true;
  //   }
      
  // }
  //组件的优化。 子组件不需要更新,但是一直在更新。相当于一个阀门。
  render() {
    console.log('我是儿子,sub render');
    return (
      <div>
        我是sub
      </div>
    )
  }
}


class App extends Component {
  
  state = {
    num: 1
  }
  onClick = () =>{
    this.setState({
      num: this.state.num +1 
    })
  }
  render()  {
    console.log('我是父亲组件,App render')
    const {num} = this.state
    return (
      <div>
        <Sub />
        <p>{num}</p>
        <button onClick={this.onClick}>按钮1</button>
      </div>
    )
  }
}

export default App;

 

posted on 2021-02-25 15:37  程序员草莓  阅读(171)  评论(0编辑  收藏  举报