javascript - 如何防止我的功能组件使用 React memo 或 React hooks 重新渲染?

标签 javascript reactjs ecmascript-6 react-hooks

hiddenLogo 改变值时,组件被重新渲染。我希望这个组件永不重新渲染,即使它的 Prop 改变了。使用类组件,我可以像这样实现 sCU 来做到这一点:

shouldComponentUpdate() {
  return false;
}

但是有没有办法处理 React hooks/React 备忘录?

这是我的组件的样子:

import React, { useEffect } from 'react';
import PropTypes from 'prop-types';

import ConnectedSpringLogo from '../../containers/ConnectedSpringLogo';

import { Wrapper, InnerWrapper } from './styles';
import TitleBar from '../../components/TitleBar';

const propTypes = {
  showLogo: PropTypes.func.isRequired,
  hideLogo: PropTypes.func.isRequired,
  hiddenLogo: PropTypes.bool.isRequired
};

const Splash = ({ showLogo, hideLogo, hiddenLogo }) => {
  useEffect(() => {
    if (hiddenLogo) {
      console.log('Logo has been hidden');
    }
    else {
      showLogo();

      setTimeout(() => {
        hideLogo();
      }, 5000);
    }
  }, [hiddenLogo]);

  return (
    <Wrapper>
      <TitleBar />
      <InnerWrapper>
        <ConnectedSpringLogo size="100" />
      </InnerWrapper>
    </Wrapper>
  );
};

Splash.propTypes = propTypes;

export default Splash;

最佳答案

正如 G.aziz 所说,React.memo 的功能类似于纯组件。但是,您也可以通过向其传递一个函数来调整其行为,该函数定义什么才算相等。基本上,此函数是 shouldComponentUpdate,除非您希望它呈现,否则返回 true。

const areEqual = (prevProps, nextProps) => true;

const MyComponent = React.memo(props => {
  return /*whatever jsx you like */
}, areEqual);

关于javascript - 如何防止我的功能组件使用 React memo 或 React hooks 重新渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54946933/

相关文章:

javascript - 如何正确停止 Meteor Tracker.autorun?

javascript - Pug/Jade - 输入是一个自闭合元素 : &lt;input/> but contains nested content?

javascript - 如何使用 Javascript 或 Node.js 检查 Windows 操作系统更新状态?

javascript - MSAL JS 在使用 acquireTokenSilent 函数更新 ID token 时抛出 multiple_matching_tokens_detected 异常

javascript - 禁用 Material ui Datepicker 中的 future 日期

javascript - 如何在浏览器的 JavaScript 控制台中访问 ES6 模块中定义的函数?

javascript - 将 $mdMenu 注入(inject)作用域。无法读取未定义的属性 open()

javascript - 在 Semantic UI React 中隐藏损坏的图像链接

javascript - 如何使用 gulp-uglify 缩小 ES6 函数?

javascript - ECMAScript : Some questions about Job and Job queue