Ich versuche, eine benutzerdefinierte Checkbox-Komponente (ein Drei-Zustand, eigentlich, aber das ist irrelevant, außer zu sagen, dass ich nicht nur eine Eingabe verwenden), und ich bin mir nicht sicher, wie ich es schaffen kann Ändern Sie "checkedness" aus Klicks auf sich selbst und aus einem Wertsatz, der vom übergeordneten Element herunterkommt.Wie verwalte ich den Status einer React-Komponente, bei der der Status vom übergeordneten Element oder von Ereignissen geändert werden kann?
Derzeit habe ich es als eine autarke Komponente, die eine OnChange-Requisite mit der Handler-Callback, die es aufruft, um den Wert die übergeordnete Komponente nach Klicks sendet. Es verwendet einen Zustand, um die Checkedness zu speichern, auf die das Display verweist.
Wenn es nur ein Display von checkedness wäre, mit Wert von außen verwaltet wird, würde ich Requisiten natürlich verwenden. Wenn es nur eine autarke Checkbox-Komponente wäre, die einen Anfangswert angenommen hätte und dann nur auf Klicks reagiert hätte, würde ich den Status verwenden, wie ich es bin, aber mein Problem ist, dass ich es anklickbar machen möchte, um es ein- und auszuschalten Erlauben Sie dem Elternteil, es auch an- und auszuschalten.
Ich bin ein Anfänger zu Reagieren und die "Reactive Art zu denken", also vermute ich, dass ich gerade dieses Falsche nähere. Ich habe den Eindruck, dass der richtige Weg dafür wäre, dass es sich um eine reine Display-Komponente handelt, die Klicks an die übergeordneten Elemente weiterleitet und im Gegenzug Requisiten-Updates für Wertänderungen vom Vorgänger erhält das würde meiner Meinung nach die Komponente weit weniger wiederverwendbar machen.
Also, wie würde ich eine Checkbox Änderung von internen und Eltern Quellen machen?
Relevante Links sind ebenfalls willkommen.
Ja, das klingt nach dem, was ich tun muss. Ich fange an, meine Gedanken von meinen alten "Eiferbrigaden" -Ideen (wo Daten nach Bedarf von einer einzelnen Komponente behandelt werden) zu mehr von der "zentralen Kontrollpunkt" -Idee zu verschieben, die React verwendet. Ich habe einfach nicht gemerkt, dass Philosophie so allumfassend war, was mein Auflegen war. Und danke für die Artikellinks. – SuperFLEB