Ich habe eine Listview wie:aktualisiert this.state.dataSource nicht aktualisiert Listview
<ListView
dataSource={this.state.dataSource}
renderRow={this.renderMovie}
style={styles.listView}
/>
Es zeigt Zeilen wie:
<View style={styles.container}>
<TouchableHighlight onPress={this._onPressButton.bind(this,movie)}>
<Image
source={{uri: movie.uri}}
style={styles.thumbnail}
/>
</TouchableHighlight>
<View style={styles.rightContainer}>
<Text style={styles.title}>{movie.id}</Text>
<Text style={styles.year}>{movie.votes}</Text>
</View>
</View>
Ich habe eine Funktion, die this.state.dataSource aktualisiert mit der Anzahl der "Stimmen" die ein Film hat. Aber diese Änderungen spiegeln sich nicht in der Benutzeroberfläche wider, aber wenn ich die this.state.dataSource protokolliere, sind die Änderungen vorhanden. Muss ich die Zeilen irgendwie neu rendern? Sollten sie sich nicht automatisch ändern?
Danke!
Das Problem, das ich sehe, ist, dass Sie eine "new_data_for_datasource" haben, aber meine neue Datenquelle wäre die aktuelle Datenquelle. Wie in, ändere ich this.state.dataSource. Also kann ich nicht dataSource: this.ds.cloneWithRows (this.state.dataSource) richtig? Wie in, ich habe kein neues dataSource-Objekt. Ich könnte einen als eine Kopie der Datenquelle des aktuellen Staates festlegen? –
Ich verstehe nicht, wie Sie das ListView ohne Aktualisierung der Datenquelle neu laden. Können Sie mir den Code zeigen, wo Sie die ursprüngliche dataSource erstellen? In dieser dataSource mussten Sie cloneWithRows verwenden, um einige Daten zu übergeben oder die dataSource kam von einer vorherigen Komponente, die von Requisiten übergeben wurde? – nicopasso
'FetchData: function() { fetch (REQUEST_URL) .then ((Antwort) => response.json()) .then ((Response) => { this.setState ({ Datenquelle: this.state .dataSource.cloneWithRows (responseData.gifs), geladen: true, }); }) .done(); }, ' –