redux-form: Wie kann ich die Übergabeschaltfläche deaktivieren, wenn mindestens ein Feld ungültig ist?

8

Ich rende das untenstehende einfache Formular mit redux-form und es funktioniert gut. Jetzt möchte ich den Submit-Button in einer weiteren Situation deaktiviert haben: Wenn eines der Field einen Fehler hat (d. H. Es ist meta.error gesetzt).

Wenn ich in die Dokumente blicke, ist es wahrscheinlich nicht möglich, dass das umgebende <form> weiß, ob seine <Field> -Komponenten einen Fehler haben. Vielleicht hat irgendjemand eine Idee, wie man es so einfach löst wie disabled={hasErrors || submitting || pristine}

%Vor%     
Christof Kälin 03.05.2017, 19:33
quelle

3 Antworten

9

Missbrauche den Zustand nicht, den du nur mit this.props brauchst Für jede setState-Komponente wird noch einmal render

ausgegeben %Vor%     
masoud soroush 03.12.2017 10:40
quelle
3

Was Sie tun sollten, ist nur eine Variable namens Errors , die wahr ist, sobald Ihr API-Aufruf mit einem Fehler zurückkommt

%Vor%     
Alastair 03.05.2017 19:41
quelle
0

Alastair wies mich in die richtige Richtung (Danke dafür!). Ich denke, dies ist einer der Fälle, in denen ein lokaler UI-bezogener Zustand tatsächlich sehr nützlich ist. Also habe ich das SFC in eine Reaktionsklasse umgewandelt. Die Klassen constructor und componentWillReceiveProps sehen so aus:

%Vor%

Wenn Sie jetzt this.state.errors verwenden, um die Schaltfläche deaktiviert zu haben, funktioniert es einwandfrei. Wie Sie sehen können, musste ich die invalid prop form redux-form verwenden, weil ihre error prop immer undefiniert war und nicht zu vergessen, sie wieder wahr zu setzen, wenn das Formular gültig ist. Außerdem weiß ich nicht, warum Sie die this -Referenz in that in Ihre Antwort kopiert haben. Es würde kein Verhalten ändern, da es immer noch auf dasselbe Objekt zeigt.

    
Christof Kälin 03.05.2017 20:32
quelle