Google-карты-реагировать не работает

У меня есть MapContainer:

import React, { Component } from "react";
import ReactDOM from "react-dom";
export class MapContainer extends Component {
componentDidUpdate(props) {
    this.loadMap();
}
loadMap() {
    if (this.props && this.props.google) {
        const {google} = this.props;
        const maps = google.maps;
        const mapRef = this.refs.map;
        const node = ReactDOM.findDOMNode(mapRef);
        const mapConfig = Object.assign({}, {
            center: {lat: 50.4418782, lng: 30.5107196},
            zoom: 15,
        })
        this.map = new maps.Map(node, mapConfig);
            addMarker({lat: 50.4418782,lng: 30.5107196});
            function addMarker(coords) {
                const marker = new google.maps.Marker({
                    position: coords,
                    map: this.map
                });
            }
     }
 }



render() {
    const style = {
        width: '100%',
        height: '40rem',
        margin: '2rem auto'
    };

    return (
        <div ref="map" style={style}>
            loading map...
        </div>
    )
  }
}

export default MapContainer;

Когда это началось, у меня есть TypeError:

Невозможно прочитать свойство 'map' из undefined. введите описание изображения здесь

В чем дело?

1 ответ

В React функции не связаны автоматически с экземпляром компонента ( документация), они должны быть явно связаны. Вы могли бы использовать bind функция в этом отношении, в представленном примере строка:

addMarker({lat: 50.4418782,lng: 30.5107196});

необходимо заменить на:

addMarker.bind(this)({ lat: 50.4418782, lng: 30.5107196 });
Другие вопросы по тегам