React中_函数(memo)和class(PureCompon

2021-12-22  本文已影响0人  coderhzc

memo 只能是函数组件可以使用的,类组件(class)是用不了的

所有的函数组件都是可以包裹一个memo函数的 这个函数就像类组件的PureComponent的效果是一样的

memo 阻止多次调用的问题

import React, { memo, PureComponent } from "react";


// 所有的函数组件都是可以包裹一个memo函数的 这个函数就像类组件的PureComponent的效果是一样的
const MemoHeader = memo(function Header() {
  console.log("Header render被调用了");
  return (
    <div>
      <h1>Header</h1>
    </div>
  );
});

class Main extends PureComponent {
  constructor(props) {
    super(props);
    this.state = {
      counter: 0,
    };
  }
  render() {
    console.log("Main render被调用了");
    return (
      <div>
        <h1>Main</h1>
      </div>
    );
  }
}

export default class App extends PureComponent {
  constructor(props) {
    super(props);
    this.state = {
      counter: 0,
    };
  }
  render() {
    console.log("App render被调用了");
    const { counter } = this.state;
    return (
      <div>
        <h1>当前计数:{counter}</h1>
        <button onClick={() => this.addClick()}> + 1</button>

        <MemoHeader />
        <Main />
      </div>
    );
  }

  addClick() {
    this.setState({
      counter: this.state.counter + 1,
    });
  }
}

PureComponent是专门针对 类组件的,memo是专门针对函数组件的,这两个的作用:主要是防止多次渲染

上一篇 下一篇

猜你喜欢

热点阅读