我正在创建一个应用,其中我有一个Overlay
组件和一个Map
组件渲染,就像这样:
<div>
{showOverlay && <Overlay />}
<Map /> // this component should render only once
</div>
显示叠加层以让地图加载到下方,但当我删除Overlay
(此处将showOverlay设置为false)时,Map
组件会重新渲染。
起初我认为可能是一个改变了导致重新渲染的道具,所以我尝试通过在Map
方法中返回false来明确告诉shoudComponentUpdate()
组件不要重新渲染:
shouldComponentUpdate() {
console.log("No, don't update please");
return false;
}
但结果是一样的,当我关闭叠加层时,组件会重新渲染。
为了使事情变得更奇怪,当组件重新渲染时,shouldComponentUpdate()
未被调用(我没有在控制台中获得"No, don't update please"
日志。)
什么原因导致我的组件重新渲染?
谢谢!