Ho un'app mappa che ho costruito che richiede che alcune icone delle mappe appaiano/scompaino dopo la pressione di un pulsante, ma non riesco a capire come impostarlo per ri-renderizzare il componente quando passo in una nuova proprietà sportiva da componente genitori:Perché il mio componente di reazione non si aggiorna con gli aggiornamenti di stato?
Parent carichi componente:
<SimpleMap sports=[default value and future values go here] />
semplice componente mappa (semplificato):
constructor(props) {
(props);
this.state = {
events: [{venue: {lat: 2, lon: 1}}],
sports: ["baseball", "football", "paddle", "soccer", "boxing", "dart", "biking", "golf", "hockey", "inline-skating", "tennis", "volleyball", "skateboard", "kickball", "bowling", "pool", "ride", "hike", "ice-skating"]
};
};
componentWillReceiveProps (nextProps) {
this.setState({events: [{venue: {lat: 2, lon: 1}}],
sports: nextProps.sports});
console.log(nextProps.sports);
}
static defaultProps = {
center: {lat: 36.160338, lng: -86.778780},
zoom: 12,
sports: ["baseball", "football", "paddle", "soccer", "boxing", "dart", "biking", "golf", "hockey", "inline-skating", "tennis", "volleyball", "skateboard", "kickball", "bowling", "pool", "ride", "hike", "ice-skating"],
};
makeMapEvents (insertProps) {
fetch("./json/meetup.json").then((response) => {
return response.json()
}).then((response) => {
/* eventually returns new events object based on insertProps */
this.setState({events: response});
}
};
componentDidMount() {
this.makeMapEvents(this.state.sports);
console.log("mounted", this.state.sports);
}
finisce Finalmente qui per mappare gli eventi da stato:
<GoogleMap>
{this.state.events.map((result) => {
return (<Marker key={counter++} lat={result.venue.lat} lng={result.venue.lon}
sport={this.props.sport} data={result}/>);
})}
</GoogleMap>
Dove è la variabile 'counter' definiti? Inoltre, non dovresti quasi mai usare un valore di indice come proprietà 'chiave' in React. Usa sempre un identificatore univoco per ogni componente reso in loop, altrimenti potresti incontrare comportamenti strani quando gli articoli vengono rimossi o riordinati. –
È definito altrove. L'ho semplificato. È solo un numero. Grazie per il consiglio. – deek