Ich bin ziemlich neu zu reagieren und ich verwende derzeit native reagieren. Ich versuche, eine Komponente zu schaffen, die von meiner State-Management-Bibliothek abgekoppelt ist, sei es Redux oder Flux, mit der Absicht, dass ich sie schließlich öffentlich teilen kann. Mein Problem rührt von der Tatsache her, dass ich momentan redux verwende, aber die Komponente selbst verwendet this.state
und this.setState
, um ihren internen Zustand zu erhalten, der wie ein Anti-Pattern aussieht, und die Renderer scheinen nicht zu funktionieren. Meine Frage ist also, wie erstelle ich eine isolierte Komponente, die nicht auf Redux, Flussmittel usw. angewiesen ist, sondern in der Lage ist, den internen Zustand aufrechtzuerhalten? Wie machen es üblicherweise Komponenten von Drittanbietern?Verwenden von setState für externe UI-Komponenten?
Antwort
Ich glaube nicht, dass die Verwendung des Komponentenstatus (this.state
) ein Anti-Pattern ist. In der Tat denke ich, dass dies der richtige Weg für eine Komponente ist, ihren eigenen, internen Zustand zu erhalten/zu aktualisieren. Sie müssen sich nur darüber im Klaren sein, dass das Ändern des Status einer Komponente (this.setState
) dazu führt, dass der render()
erneut aufgerufen wird. Wenn Sie den Status aktualisieren möchten, aber Sie nicht möchten, dass die Komponente erneut gerendert wird, sollten Sie die shoudComponentUpdate(nextProps, nextState)
-Funktion der Komponente überschreiben und ordnungsgemäß implementieren.
Es gibt viele Gründe für eine Komponente, ihren Status zu aktualisieren. Zum Beispiel habe ich eine Komponente mit einer render()
ähnlichen Funktion wie diese habe:
render() {
if (this.state.networkError) {
return <ErrorView />
} else if (this.state.isLoading) {
return <Spinner visible={true}/>
} else {
return <Text>Success</Text>
}
}
So basierend auf seinem aktuellen Zustand macht die Komponente der entsprechende Kind-Komponente.
- 1. setState für verschachtelte Objekte
- 2. setState von reagieren nicht
- 3. Verwenden von $ kompilieren für externe Vorlage (templateURL) in Angular-Direktive
- 4. ReactJS setState ist langsam
- 5. React: Syntax für den Aufruf von setState in Switch Return
- 6. Navigieren zu Komponente zweimal Fehler für SetState
- 7. C# -Lösungen: Verwenden eines "Globals" -Projekts für externe DLLs?
- 8. Warum reagiert setState asynchron?
- 9. So verwenden Sie externe CSS für ein Hintergrundbild mit gedit
- 10. Verwenden Sie externe Python-Bibliotheken auf Pyramid
- 11. React setState wiederverwendbar
- 12. So verwenden Sie reagieren setState mit Chrom-API
- 13. Weird setState Verwendung
- 14. Externe Gyroskop/Beschleunigungsmesser für iphone
- 15. Python - Verwenden Sie externe Funktion als Klassenmethode
- 16. SetState mit Datamaps reagieren?
- 17. React Native: setState Verzögerung
- 18. Can not setState Variable
- 19. Reagieren setState nicht Zustandsaktualisierungs
- 20. DDD - Anmeldeinformationen für externe Kontexte
- 21. setState nicht funktioniert
- 22. Einfache externe Datenbank für Android
- 23. Verwenden SetTimeout nach setState reagieren in Asynchron-Ausgabe
- 24. Reagieren: können Sie SetState mit vorhandenem Statusobjekt verwenden?
- 25. React setState Updates Requisiten
- 26. ReactJS, Aufruf von setState mit demselben Parameter
- 27. React setState des Arrays von Objekten
- 28. Auswirkungen von React setState direkt ändern prevState?
- 29. Verwenden von reagieren, um externe Änderungen aus der Datenschicht widerzuspiegeln
- 30. Race-Bedingung in React setState