2016-05-27 16 views
1

Ich habe ein Formular, bestehend aus drei Feldern. Wenn Feld 1 den Wert true hat, muss Feld 3 aus dem Formular entfernt werden. Wenn Feld 1 den Wert false hat, muss Feld 3 wieder in das Formular eingefügt werden.Dynamisch ändern redux-form basierend auf Feldwerte

Ich finde nicht eine einfache, saubere Art, dies zu tun.

Eines der Beispiele auf der Website redux-form erläutert, wie ein Formular basierend auf dem Status des Formularbehälters dynamisch erstellt wird. Der Container übergibt das Feldarray an die Formularkomponente als prop, und die Eingabefelder, die das Feldarray steuern, befinden sich innerhalb des Containers. Ich kann diesen Ansatz nicht wirklich verwenden, da Feld 1 innerhalb des Formulars sein muss.

Ich habe versucht, Feld 3 einfach mit CSS zu verstecken, aber die Validierungsregeln sind nicht bewusst, welche Felder ausgeblendet sind oder nicht.

Antwort

1

Wenn Sie nicht über die Struktur der Form ändern müssen, und wollen nur das Feld verstecken, vielleicht wird dies für Sie arbeiten:

render() { 
    const {yourField1, yourField3} = this.props; 
    <div> 
    <Input type="text" {...yourField1} /> 
    { !yourField1.value && 
     <Input type="text" {...yourField3} />} 
    </div> 
+0

Das wird funktionieren, aber ich woul müssen noch testen für den Wert von yourField1 in meiner Validierungsfunktion, andernfalls wird yourField3 weiterhin validiert. –

+1

Werfen Sie einen Blick auf das Beispiel für SynchronousValidationForm in der Dokumentation http://redux-form.com/5.2.5/#/examples/synchronous-validation?_k=cpiwib Sie validieren yourField3 nur, wenn IhrField1 falsch ist – parecementeria

+0

ja, das ist was ich damit meinte, dass ich in meiner Validierungsfunktion auf den Wert von yourField1 testen müsste. Ich dachte, dass es eine Möglichkeit geben würde, das Feld komplett aus meinem Formular zu entfernen. Wie auch immer, ich denke, ich werde die Frage noch etwas länger offen lassen, falls jemand eine bessere Lösung finden sollte. Danke @parecementeria! –

Verwandte Themen