fix markers rerender when click to open InfoWindow
Solving issue #269
In Marker.js componentDidUpdate()
this.props.position and prevProps.position will never be equal after component is fully rendered in first time, because these properties are objects, for this reason I use the lat and lng to compare after the first rendering.
@deadkff01 , I came across that issue recently. I did the same comparison but in shouldComponentUpdate method. Can I ask you why you've opted to the componentDidUpdate? Thanks
@m-bartenev, I did the comparison in componentDidUpdate only to keep the same code structure. :)
@deadkff01 , I see :) Thank you for your answer!
To anyone who comes across this bug, here is a patch you can use until things are merged, should stop the constant re-renders:
class CustomMarker extends Marker {
componentDidUpdate(prevProps) {
if(
this.props.map !== prevProps.map ||
this.props.icon.url !== prevProps.icon.url ||
(
this.props.position.lat !== prevProps.position.lat ||
this.props.position.lng !== prevProps.position.lng
)
) {
if(this.marker) {
this.marker.setMap(null);
}
this.renderMarker();
}
}
}
Nice @srobertson421