Ich habe diesen Codeblock, der die staatliche Komponente behandelt:Doppelte Werte innerhalb this.state.datasource
componentWillMount(){
this.state = {
datasource: new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2})
}
db.transaction((tx) => {
tx.executeSql("SELECT * FROM schedules", [], (tx, res) => {
let len = res.rows.length;
if(len > 0) {
for(let i = 0; i < len; i++) {
obj.push({id: res.rows.item(i)["id"], title: res.rows.item(i)["title"]})
}
this.setState({
datasource: this.state.datasource.cloneWithRows(obj)
})
var data = this.state.datasource;
console.log(data);
} else {
console.log("empty")
}
})
}, (err) => {
console.log("error: " + JSON.stringify(err))
})
}
Es wirkt wie ein Zauber, wenn die App zum ersten Mal startet. Aber immer wenn ich die Seite erneut betrete, werden die Werte innerhalb der Datenquelle dupliziert. Sollte rowHasChanged: (row1, row2) => row1 !== row2
die ListView zwingen, sich nicht so zu verhalten oder fehlt mir eine Logik, die dem Code hinzugefügt werden muss?
Listview-Fehler Beispiel:
========================
| First title, id: 1 |
========================
| Second title, id: 2 |
========================
| First title, id: 1 |
========================
| Second title, id: 2 |
Wenn ich Konsole die Datenquelle ich diese Eigenschaft sah protokolliert: _cachedRowCount:15
Gibt es eine Möglichkeit native zu zwingen, reagieren nicht jedes Mal this.state.datasource und erneut ausführen cachen Die Seite wird geöffnet?