まず、ReactJSの新機能です。 MapComponentにマーカーを表示したいと思います。私はこの仕事をしましたが、正直言ってそれを行うより良い方法があるはずです... 親コンポーネントから小道具を入手し、そこからJSONからロードされます。各項目(JSONから)の座標をMapComponentの状態のマーカーに渡したいと思います。私はGoogleマップの反応Googleマップソリューションを使用しました。 誰かが私にこのケースで最善のアプローチとなるアドバイスをくれたかもしれませんか?任意のヒントありがとう!あなたが小道具を経由して、あなたの状態を渡しているのでReactJSのコンポーネントの状態
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何をお勧めしますか?アイテムをループしてから、Googleマップの座標をループする必要がありますか? – burakukula
私の提案は、それを前のループで実行するのではなく、1つのループで実行することです。そして、別のループを実行してレンダリングします。私の答えは – webdeb