【发布时间】:2019-07-23 14:56:06
【问题描述】:
当hiddenLogo 改变值时,组件被重新渲染。我希望这个组件从不重新渲染,即使它的道具发生变化。使用类组件,我可以通过像这样实现 sCU 来做到这一点:
shouldComponentUpdate() {
return false;
}
但是有没有办法使用 React 钩子/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;
【问题讨论】:
标签: javascript reactjs ecmascript-6 react-hooks