Eine meiner React-Komponente erhalten ein Array von JSON. Und die Komponente enthält eine KomponenteDidUpdate. Ich weiß, dass diese Funktion direkt vor dem Rendern ausgeführt wird, und ich sehe nextProps und nextState, damit ich sie mit dem aktuellen vergleichen kann. Doch die inneren Arbeits verwirrt michComponentDidUpdate innere Arbeit verwirrt mich
Hier werden die Schritte meines Programms:
- Mutter Komponente neu aktualisierte Liste dieser Komponente zu übergeben
Diese Komponente Lauf componentDidUpdate:
- Vergleichen Sie die alte Liste mit dieser neuen aktualisierten Liste. Finden Sie die neu hinzugefügte Artikel, drücken Sie sie in dieser Komponente Zustand (ein Array Anruf
differenceList
)
- Vergleichen Sie die alte Liste mit dieser neuen aktualisierten Liste. Finden Sie die neu hinzugefügte Artikel, drücken Sie sie in dieser Komponente Zustand (ein Array Anruf
diese Komponente rendern nach dem
differenceList
Es folgt mein console.log, dass ich habe überall platziert.
// nachdem ich eine Aktualisierung der Liste
- Eingabe ComponentWillUpdate
- Fand das Unikat auslösen: „1336“ und nächste Codezeile schieben Sie es in Array
- haben sollte nur geschoben es in Array mit
self.setState({differenceList: self.state.differenceList.concat(item.id)});
- erreicht Ende von ComponentWillUpdate, this.state.differenceList ist: [] // was ??
- Eingeben der Renderfunktion, this.state.differenceList ist: []
- ComponentWillUpdate eingeben // warum wieder?
- Ende ComponentWillUpdate, this.state.differenceList ist: []
- Eingabe-Rendering-Funktion, this.state.differenceList ist: [ "1336"]
warum #4
zeigt leer ??
um #6
warum componentWillUpdate erneut eingeben? Liegt es daran, dass ich den Status in componentWillUpdate aktualisiert habe? aber wenn ja, warum ist #5
zeigt leeren Zustand #8
Jetzt nach dem Eingeben der Render-Funktion wieder, zeigt es plötzlich den geänderten Zustand
Ich habe diese Seite ein paar Mal gelesen, kann nicht glauben, dass ich die wichtigen Notizen verpasst habe. Danke vielmals! Der asynchrone Sinn macht mir Dank! – user308553