Прежде всего, я новичок в ReactJS. Я хотел бы отображать маркеры в моем MapComponent. Я сделал эту работу, но, честно говоря, я думаю, что должен быть лучший способ сделать это ... Я получаю реквизиты из моего родительского компонента, где они загружаются из JSON. Я хотел бы передать координаты из каждого элемента (из моего JSON) в маркеры в состоянии в моем MapComponent. Я использовал решение google-maps для карт google. Возможно, кто-то может дать мне совет, какой был бы лучший подход в этом случае? Большое спасибо за любые советы!Состояние компонента в реактиве
export class MapComponent extends React.Component {
constructor(props) {
super(props)
this.state = {
markers: []
}
}
getMarkers() {
if (this.props.data.rows) {
var markers = this.props.data.rows.map(function(item, i) {
return {
position: {
lat: item.coordinate[0],
lng: item.coordinate[1]
},
item: item
}
});
this.setState({
markers: markers
});
}
}
shouldComponentUpdate(nextProps, nextState) {
return true;
}
componentDidUpdate() {
this.getMarkers();
}
render() {
return (
<div className={styles.map}>
<GoogleMapLoader
containerElement={
<div
{...this.props}
style={{
height: "100%",
}}
/>
}
googleMapElement={
<GoogleMap
ref={(map) => console.log(map)}
defaultZoom={9}
defaultCenter={{lat: 52.379189, lng: 4.899431}}>
{this.state.markers.map((marker, index) => {
return (
<Marker
{...marker}
/>
);
})}
</GoogleMap>
}
/>
</div>
);
}
}
Вы может сделать это проще всего с помощью реквизитов – webdeb
@webdeb, что бы вы предложили? Мне нужно было бы перебрать мои объекты, а затем через координаты в GoogleMap? – burakukula
Мое предложение - сделать это на лету в одном цикле, вместо того, чтобы готовить его раньше .. а затем запустить еще один цикл, чтобы отобразить их, см. Мой ответ – webdeb