当前位置: 首页 > 知识库问答 >
问题:

如何使用shouldComponentUpdate和React钩子?

姚阳德
2023-03-14

当类组件的输入道具相同时,可以使用PureComponent或ShouldComponentUpdate来避免呈现。现在,您可以通过将函数组件包装在react.memo中来对它们进行同样的处理。

所期望的:

我希望只有当模态可见时才呈现模态(由this.props.show管理)

对于类组件:

shouldComponentUpdate(nextProps, nextState) {
    return nextProps.show !== this.props.show;
}

如何在功能组件中使用memo?在modal.jsx中?

相关代码

功能组件modal.jsx(我不知道如何检查props.show)



import React, { useEffect } from 'react';
import styles from './Modal.module.css';
import BackDrop from '../BackDrop/BackDrop';

const Modal = React.memo(props => {
  useEffect(() => console.log('it did update'));

  return (
    <React.Fragment>
      <BackDrop show={props.show} clicked={props.modalClosed} />
      <div
        className={styles.Modal}
        style={{
          transform: props.show ? 'translateY(0)' : 'translateY(-100vh)',
          opacity: props.show ? '1' : '0'
        }}>
        {props.children}
      </div>
    </React.Fragment>
  );
});

export default Modal;



 return (
      <React.Fragment>
        <Modal show={this.state.purchasing} modalClosed={this.purchaseCancel}>
          <OrderSummary
            ingredients={this.state.ingredients}
            purchaseCancelled={this.purchaseCancel}
            purchaseContinued={this.purchaseContinue}
            price={this.state.totalPrice}
          />
        </Modal>
        ...
      </React.Fragment>
    );

共有1个答案

龚凯泽
2023-03-14

以下是react.memo的文档

您可以传递一个函数来控制比较:

const Modal = React.memo(
  props => {...},
  (prevProps, nextProps) => prevProps.show === nextProps.show
);

当函数返回true时,组件将不会被重新呈现

 类似资料:
  • 问题内容: 我一直在阅读以下链接: https : //reactjs.org/docs/hooks-faq.html#how-do-i- implement-shouldcomponentupdate https://reactjs.org/blog/2018/10/23/react -v-16-6.html 在第一个链接中显示为(https://reactjs.org/docs/hooks-f

  • 在React的官方文件中提到- 如果您熟悉React类生命周期方法,那么可以将useEffect钩子看作componentDidMount、componentDidUpdate和componentWillUnmount的组合。 我的问题是--我们如何在钩子中使用生命周期方法?

  • 问题内容: React钩子介绍了用于设置组件状态的方法。但是我如何使用钩子来代替如下代码的回调: 我想在状态更新后做一些事情。 我知道我可以用来做其他事情,但是我必须检查状态以前的值,这需要一个位代码。我正在寻找可以与钩子一起使用的简单解决方案。 问题答案: 您需要使用钩子来实现此目的。

  • 问题内容: 因此,我有一个数据数组,并且正在使用该数据生成组件列表。我想在每个生成的元素上都有一个引用来计算高度。我知道如何使用Class组件执行此操作,但是我想使用React Hooks进行操作。 这是一个说明我要做什么的示例: 问题答案: 不确定我是否完全理解您的意图,但我认为您需要这样的东西:

  • 我试图在react with typescript中创建一个登录表单。但setEmail方法不接受该值。它表示“string”类型的参数不能分配给“SetStateAction”类型的参数。我该怎么解决它?

  • React hooks引入了来设置组件状态。但是我如何使用钩子来替换回调,如下代码所示: