zoukankan      html  css  js  c++  java
  • 6.1React组件优化 纯组件(Pure Component)与shouldComponentUpdate关系

    参考博客: 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;
  • 相关阅读:
    每日总结
    每日总结
    每周总结
    全球覆盖(哈希+思维)
    DP搬运工2
    DP搬运工1 [来自yyy--mengbier的预设型dp]
    团队开发day06
    团队开发day05
    团队开发day04
    团队开发day03
  • 原文地址:https://www.cnblogs.com/hacker-caomei/p/14447261.html
Copyright © 2011-2022 走看看