Redux-form: zeigt eine Liste von Fehlern oben auf einer Seite an

9

Ich möchte die Redux-Form so verwenden, dass die Eingabefarbe & amp; Zeigt den tatsächlichen Fehler oben auf der Seite an. Wie kann ich auf die Liste der aktuellen Feldfehler außerhalb der Felder selbst zugreifen?

    
thevangelist 06.09.2016, 10:41
quelle

2 Antworten

14

Sie können die Fehlerliste nicht von außerhalb der Renderfunktion erhalten, die der Feldkomponente zugewiesen wurde. Dies liegt daran, dass Fehler nicht im Redux-Speicher gespeichert werden.

Lösung 1: Verwenden Sie mehrere Felder für denselben Wert

Die erste Lösung besteht darin, mehrere Instanzen von Field für denselben Wert zu verwenden. Wenn mehrere Feldkomponenten denselben Namen haben und mit demselben Formularnamen verbunden sind, werden alle mit demselben Wert und derselben Fehlerbehandlung verbunden.

Sie können also eine Feldkomponente verwenden und nur den Fehler rendern.

%Vor%

Lösung 2: Verwenden Sie den globalen Fehler Prop

Eine zweite Lösung besteht darin, die globalen Fehlerrequisiten zu verwenden, aber Sie müssen die Fehler aus der Containerkomponente mit reduxForm anzeigen.

Achten Sie darauf, dass dies ein totales Antipater ist! Globale Fehlerreproduktion ist für feldunabhängige Fehler.

%Vor%

Lösung 3: Erhalte Fehler vom Speicher

Sie können immer Fehler aus dem Geschäft erhalten, indem Sie Ihre Validierungsfunktion auf den Wert anwenden, der im Geschäft vorhanden ist. Es kann für eine starke Validierung nicht performant sein, da es bei jedem Rendern eine Validierung durchläuft, so dass es zweimal ausgeführt wird, wenn sich ein Wert ändert, und wenn sich einige andere Requisiten ändern, wird es umsonst ausgeführt. Es kann auch schwierig sein, Async-Validierung durchzuführen.

%Vor%

Eine letzte Lösung kann darin bestehen, die Fehler im Speicher zu speichern, indem Sie componentWillReceiveProps implementieren und eine Aktion zur Aktualisierung einer Fehlerliste im Laden senden, aber ich denke nicht, dass das wirklich eine gute Idee ist. Es ist besser, die einfache zustandslose Komponente zum Rendern einer Feldkomponente beizubehalten.

    
Emrys Myrooin 08.09.2016 09:49
quelle
4

Sie können die vom redux-form bereitgestellten Status-Selektoren verwenden .

Insbesondere wird getFormSubmitErrors Ihnen die Validierungsfehler senden :

geben %Vor%

Die ursprüngliche, nicht verbundene MyForm -Komponente könnte folgendermaßen aussehen:

%Vor%

Wenn Sie die synchronen Validierungsfehler anzeigen möchten, können Sie stattdessen den getFormSyncErrors Selektor verwenden.

    
nicoqh 27.10.2017 10:21
quelle