У меня проблемы с модулем реагировать-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
в конструкторе маркера, но поведение остается тем же.