Verwendung eines Eingabefeldes mit onBlur und eines Wertes von state blocks Eingabe in Reactjs JSX?

8

Ich habe eine kleine Geige gemacht, um das Problem zu zeigen: Ссылка Wenn Sie ein Eingabefeld mit onBlur und einen Anfangswert aus dem Status haben, wird die Eingabe über die Tastatur blockiert. Wenn onChange angehängt ist, funktioniert es korrekt. Warum passiert das und wie kann das gelöst werden? Ich hätte erwartet, dass es die eingegebenen Zeichen akzeptiert und den Status onBlur aktualisiert.

%Vor% %Vor%
    
Stefan Bookholt 20.05.2015, 09:34
quelle

1 Antwort

3

Das Attribut value verknüpft den Wert der Eingabe mit diesem Status, und wenn der Benutzer den Wert ändert, sind der Status und der Eingabewert nicht mehr miteinander verknüpft. React verhindert das.

Wahrscheinlich möchten Sie stattdessen das Attribut defaultValue verwenden.

Wenn Sie das Attribut value verwenden möchten, müssen Sie onChange verwenden, um es mit dem Komponentenstatus zu synchronisieren. Dies liegt daran, dass die Komponente zu einem beliebigen Zeitpunkt erneut gerendert werden kann und der Wert nicht mit dem Status übereinstimmt, der einen alten Wert wiedergeben würde.

    
Anders Ekdahl 20.05.2015, 09:54
quelle

Tags und Links