diff --git a/src/google_map.js b/src/google_map.js
index 180ff6a..14ff7d3 100644
--- a/src/google_map.js
+++ b/src/google_map.js
@@ -240,7 +240,7 @@ export default class GoogleMap extends Component {
this.zoomAnimationInProgress_ = false;
this.state = {
- overlay: null,
+ overlayCreated: false,
};
}
@@ -593,7 +593,7 @@ export default class GoogleMap extends Component {
: '2000px';
const div = document.createElement('div');
- this.overlay = div;
+ this.div = div;
div.style.backgroundColor = 'transparent';
div.style.position = 'absolute';
div.style.left = '0px';
@@ -607,21 +607,29 @@ export default class GoogleMap extends Component {
maps,
overlay.getProjection()
);
-
- this_.setState(state => ({
- ...state,
- overlay: div,
- }));
+ ReactDOM.unstable_renderSubtreeIntoContainer(
+ this_,
+ ,
+ div,
+ // remove prerendered markers
+ () => this_.setState({ overlayCreated: true })
+ );
},
onRemove() {
- this_.setState(state => ({
- ...state,
- overlay: null,
- }));
-
- if (this.overlay) {
- ReactDOM.unmountComponentAtNode(this.overlay);
+ if (this.div) {
+ ReactDOM.unmountComponentAtNode(this.div);
}
},
@@ -1060,7 +1068,7 @@ export default class GoogleMap extends Component {
};
render() {
- const mapMarkerPrerender = !this.state.overlay
+ const mapMarkerPrerender = !this.state.overlayCreated
?
- {this.state.overlay &&
- ReactDOM.createPortal(
- ,
- this.state.overlay
- )}
{/* render markers before map load done */}
{mapMarkerPrerender}