我刚刚开始使用React JS,我目前正致力于将谷歌地图“google-maps-react”打包并运行。
根据我对React JS的基本理解,任何更改都会导致整个组件层次结构重新呈现。
通过此link了解Google使用信息;任何重新渲染都构成一种用法。
问题 那么,React JS开发人员如何处理这个问题呢? React之前的25,000个免费地图渲染是相当可观的,但它似乎是一个相当简单的上限,像React这样的框架会导致重新渲染你的层次结构中的任何变化。
选项1 是确保map组件不嵌套在可由其他组件更新的层次结构中的最佳方法吗?我编写了一个示例应用程序,并确认只重新调用层次结构中调用更改的组件。
如果这是最好的方式,那很好,但我希望听到更有经验的React开发人员。
谢谢,
答案 0 :(得分:1)
我认为25k限制是指您请求google maps js sdk,而不是您实例化google.maps.Map
对象的频率。
是的,最好不要一直重新渲染封装地图的组件。
检查这个简单的地图组件:
https://github.com/Scarysize/react-maps-popup/blob/master/src/map.js
它初始化地图一次并使用函数作为子方法传播地图实例(你可以简单地将回调作为道具传递)。
答案 1 :(得分:0)
经过一番挖掘后,我发现“google-map-react”NPM软件包在幕后做了一些有趣的事情。它实际上是使用最新的地图状态向您的标记发送更新。
一旦我找到了这个,我就陷入了这种行为,现在我的地图只渲染了一次,我根据这种行为动态处理标记变化。
我无法在任何地方找到此行为,但碰巧在我的标记内通过console.log(JSON.stringify(this.props))偶然发现。