Warum ist meine reagieren Komponente nicht aktualisiert, mit Status-updates?

Habe ich eine Karte-app, die ich gebaut, das erfordert einige map-icons erscheinen/verschwinden nach dem drücken einer Taste, aber ich kann nicht herausfinden, wie, um es zu re-Rendern der Komponente, wenn ich pass in eine neue Sport-Eigenschaft vom Eltern-Komponente :

Eltern Lasten Bauteil:

<SimpleMap sports=[default value and future values go here] />

Einfache Karte Komponente(vereinfacht):

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);
}

Landet schließlich hier, um anzeigen von Ereignissen aus-Zustand:

<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>
  • Wo ist der counter variable definiert? Außerdem sollten Sie ziemlich viel verwenden Sie niemals ein index-Wert als ein key Eigenschaft in Reagieren. Verwenden Sie immer einen eindeutigen Bezeichner für jede loop-Komponente gerendert, sonst kann es zu seltsam Verhalten, wenn Elemente entfernt oder neu angeordnet werden.
  • Es ist anderswo definiert. Ich habe es vereinfacht. Es ist nur eine Zahl. Danke für den Tipp.
InformationsquelleAutor deek | 2016-07-05
Schreibe einen Kommentar