AlexFo90
@AlexFo90

Как инициализировать yandex map в react компоненте вместе с загрузкой страницы?

Добрый день, натолкните пожалуйста на истину. есть главная компонента и есть компонента с картой
class MainComponent extends React.Component {

}

class MapComponent extends React.Component {
handleScriptLoad = () => {
    const {ymaps} = window;
    ymaps.ready(this.init);
  }

  init = () => {
    const {ymaps} = window;
    const myMap = new ymaps.Map('map', {
      center: [55.76, 37.64],
      zoom: 5,
      controls: []
    });
    return myMap;
  }

render() {
    const instanceMap = this.init();
    return (
      <div>
        <Script
          url="https://api-maps.yandex.ru/2.1/?&lang=ru_RU"
          onLoad={this.handleScriptLoad}
        />
        <button onClick={() => какая-то функция(instanceMap)}>Add</button>
        <div id='map' className={styles.containerMap}></div>
      </div>
    )
  }

}


мне нужно инициализировать карту при загрузке страницы сразу. Так как мне нужен доступ к экземпляру моей карты, я его хочу получить в render-методе и потом использовать его в приложении. То есть добавлять Placemark и и.т.д. Но в момент отрисовке render метода у меня еще нет доступа к ymaps поэтому он ругается... подскажите как исправить (вынести загрузку в компонент MainComponent или может жизненный цикл какой-то использовать ??? )
  • Вопрос задан
  • 1375 просмотров
Решения вопроса 1
freislot
@freislot
Frontend-разработчик
Используйте жизненный цикл componentDidMount() и в нем делайте вызов карты

componentDidMount(): вызывается после рендеринга компонента. Здесь можно выполнять запросы к удаленным ресурсам

https://metanit.com/web/react/2.6.php

ps: насчет правильности подключения карты в вашем коде не уверен.
Советую ознакомиться с похожим вопросом Как работать с yandex map React?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект