Я использую React Google Maps, чтобы добавить Google Maps на свою страницу, и я устанавливаю карту сюда:
import React from "react";
import { withScriptjs, withGoogleMap, GoogleMap, Marker } from "react-google-maps";
export const MapWithMarkers = withScriptjs(withGoogleMap((props) =>
<GoogleMap
defaultZoom={17}
center={{ lat: parseFloat(props.lat), lng: parseFloat(props.long) }}
>
{props.markers.map(marker => (
<Marker
key={marker.todoId}
position={{ lat: parseFloat(marker.lat), lng: parseFloat(marker.long) }}
/>
))}
</GoogleMap>
))
Однако я хотел бы внедрить хранилище и использовать this.props.store.lat
, а не props.lat
, используя @inject('store')
, что требует превращения MapWithMarkers в класс вместо const.
Я пробовал следующее:
import React from "react";
import { observer, inject } from 'mobx-react';
import PropTypes from 'prop-types';
import { withScriptjs, withGoogleMap, GoogleMap, Marker } from "react-google-maps";
@inject('store') @observer
export class MapWithMarkers extends React.Component {
static propTypes = {
store: PropTypes.object.isRequired,
}
constructor(props) {
super(props);
}
renderMarkers = (props) => {
<GoogleMap
defaultZoom={17}
center={{ lat: parseFloat(this.props.store.lat), lng: parseFloat(this.props.store.long) }}
>
{this.props.store.todos.map(marker => (
<Marker
key={marker.todoId}
position={{ lat: parseFloat(marker.lat), lng: parseFloat(marker.long) }}
/>
))}
</GoogleMap>
}
render() {
const props = this.props;
return withScriptjs(withGoogleMap(this.renderMarkers()));
}
}
Это не работает, возвращая:
Неперехваченная (в обещании) Ошибка: MapWithMarkers.render(): должен быть возвращен допустимый элемент React (или null). Возможно, вы вернули undefined, массив или другой недопустимый объект.
Что я делаю не так?
render() { const props = this.props; const MapUI = withScriptjs(withGoogleMap(this.renderMarkers(props))); return <MapUI /> }
- person Mayank Shukla   schedule 29.01.2018Warning: Failed prop type: The prop `loadingElement` is marked as required in `withScriptjs(withGoogleMap(undefined))`, but its value is `undefined`. in withScriptjs(withGoogleMap(undefined)) (at Map.js:33)
Warning: Failed prop type: The prop `googleMapURL` is marked as required in `withScriptjs(withGoogleMap(undefined))`, but its value is `undefined`.
Uncaught (in promise) Error: Required props loadingElement or googleMapURL is missing. You need to provide both of them.
- person   schedule 29.01.2018