In dieses Tutorial verwendet er eine onClick-Funktion mit bind.
%Vor%Wenn ich die Bindung wie folgt entferne
%Vor%Ich bekomme einen Fehler
Uncaught Error: Invariant Violation: setState (...): Kann nicht aktualisiert werden während eines bestehenden Zustandsübergangs (z. B. in
render
). Machen Methoden sollten eine reine Funktion von Requisiten und Zustand sein.
Ich weiß, was bind
macht, aber warum wird es hier gebraucht? Setzt das onClick
die Funktion nicht direkt?
(Code ist in diesem JSbin: Ссылка )
Er verwendet bind
, damit die deletePerson
-Methode das korrekte person
-Argument erhält.
Da die Card
-Komponente kein vollständiges Person
-Objekt erhält, kann dieser erkennen, auf welche Karte der Person tatsächlich geklickt wurde.
In Ihrem Beispiel, wo Sie die Bindung entfernt haben onClick={that.deletePerson(person)}
evaluiert tatsächlich die Funktion that.deletePerson(person)
und setzt diese als onClick. Die deletePerson
-Methode ändert den Zustand der Komponente, was die Fehlermeldung sagt. (Sie können den Status während eines Rendervorgangs nicht ändern).
Eine bessere Lösung könnte darin bestehen, die ID in Card zu übergeben und sie bei einem Löschklick an die App-Komponente zurückzugeben.
%Vor%Tags und Links javascript reactjs bind