我正在制作一个应用程序,其中有一个 Overlay 组件和一个 Map 组件在它后面渲染,就像这样:
<div>
{showOverlay && <Overlay />}
<Map /> // this component should mount once
</div>
显示叠加层是为了让地图在下面加载,但是当我删除叠加层(在此处将 showOverlay 设置为 false)时,Map
组件会重新加载。
起初我以为Map
组件只是重新渲染,但经过一番挖掘后,我发现组件实际上正在重新安装。
如果我登录componentWillMount
,componentWillUnmount
和render
方法,则日志按该顺序显示(这似乎是矛盾的)
render
willUnmount
willMount
父级不会重新安装,只有Map
组件会。
Map 组件只是渲染一个引用 mapbox-gl-js 地图的 div(像这样https://gist.github.com/tristen/5c4b346ae38892f732504e6785d87057#file-map-js)
什么会导致我的组件像这样重新安装自己?
谢谢 !