【发布时间】:2020-03-23 00:08:42
【问题描述】:
我有这个 React.memo 组件,我只想在 props 不因发送第二个参数 isEqual 函数而改变的情况下才渲染它。 当我 console.log 包装组件和 memmoized 组件时,我可以看到它使用相同的道具呈现。我做错了什么?
我的包装组件
export const WrapperComponent= props => {
console.log('MemoizeComponent', props);
return (
<MemoizeComponent name="memo"/>
);
}
export const WrapperComponent;
我的记忆组件
export const Component = props => {
console.log('component: ', props.name)
return (
<div>{props.name}</div>
);
}
function isEqual(prevProps, nextProps) {
console.log(prevProps.name);
console.log(nextProps.name);
return prevProps.name === nextProps.name;
};
export const MemoizeComponent = React.memo(Component, isEqual);
控制台输出:
memo
memo
component:memo
memo
memo
component:memo
【问题讨论】:
-
I want to render only if the props doesn't change with sending a second argument isEqual function这听起来与React.memo的做法相反——如果道具没有改变,则防止重新渲染。