Ich habe eine custom element in React verwendet. Ich möchte Attribute für das Element von React ändern können. Ich möchte auch die gleichen Attribute innerhalb des Elements selbst ändern können. Wenn das Element sein eigenes Attribut ändert, führt dies leider zu einigen seltsamen Nebeneffekten, von denen ich glaube, dass sie mit dem virtuellen DOM von React zusammenhängen, die nicht wissen, dass sich das Attribut geändert hat.Ändern von Attributen aus dem benutzerdefinierten Element innerhalb von React
Zur Veranschaulichung nehmen wir haben eine Funktion machen Reagieren, das die folgenden zurück:
<my-component foo="bar"/>
Und my-component
hat Logik innerhalb davon, dass, wenn das Element angeklickt wird, wird foo
‚s Wert von bar
ändern unicorn
. Alles bis zu diesem Punkt funktioniert wie erwartet. Das Problem ist, dass foo
während des nächsten Renderzyklus nicht auf bar
zurückgesetzt wird. I wollenfoo
auf bar
zurückgesetzt werden.
Meine Vermutung ist, dass virtueller DOM Reagieren hat bar
als Cache gespeicherten Wert (es nicht erkennen, es zu unicorn
geändert hat), und daher nicht versucht, es zu bar
zurück zu setzen.
- Ist mein Verständnis korrekt?
- Wie mache ich es so
foo
wird der Wert aufbar
auf den nächsten Render-Zyklus zurückgesetzt?
React wird '' nicht berühren, wenn sich Attribute oder Kinder nicht ändern. –
thangngoc89
benutzerdefinierte Elemente müssen real sein - nur um mit react gut zu spielen, oder Sie können das Element den Aktualisierungszyklus von React verwenden (1-Weg) oder etwas wie redux. Kurz gesagt, ändern Sie HTML nicht ohne React. – dandavis
Hört sich an, als hätten Sie irgendwo einen Strichcode ('foo =" bar "' ist hart codiert)? Betrachten Sie vielleicht einen Architekturrahmen, der darauf reagiert, den Staat zu führen und zu verwalten. Ich persönlich mag Redux. – ajmajmajma