【发布时间】:2018-11-16 22:58:44
【问题描述】:
我遇到了 react-google-maps 模块的问题,即标记和组件重新渲染。
这是场景:
- 加载带有地图和 2-3 个标记的页面(好的)
- 单击导航栏上的选项卡 -> 页面以单页应用方式呈现其他内容(好的)
- 单击导航栏上返回地图的选项卡 -> 页面呈现地图但不呈现标记。
我在该州持有标记数据,并将它们应用于onGoogleApiLoaded={({map, maps}) => this.renderMarkers(map, maps)} 中的地图。
我设法通过将renderMarkers 包装在一秒钟的setTimeout 中解决了这个问题,并且它以这种方式加载良好。
我不喜欢这个解决方案,我相信我根本没有按照我应该的方式去做。我相信标记试图将自己放置在未渲染的地图上,但奇怪的是,即使没有setTimeout,它也适用于默认页面(可能与反应组件生命周期有关,我不知道)。
有没有办法在地图完全加载后附加属性onGoogleApiLoaded={({map, maps}) => this.renderMarkers(map, maps)}?或者至少延迟它,直到我 100% 确定地图已加载,而不是随机的秒数。
编辑:我使用marker.setMap(map) 方法分配标记,我只是尝试在标记的构造函数中设置属性map: map,但行为保持不变。
【问题讨论】:
标签: javascript reactjs react-router-dom react-google-maps