Redux Form: Wie behandeln mehrere buttons?
Ich versuche, fügen Sie eine zweite Schaltfläche Absenden, um eine redux-form.
Beide Tasten sollte der Versand eine Aktion aus, speichert die Daten aber je nach Taste gedrückt, wird der Benutzer weitergeleitet werden soll, für verschiedene Seiten.
Also ich definiert eine Prozedur, die ich übergeben, als onSubmit
requisite an die form.
Aber soweit ich sehen kann, nur die form Daten wird an dieser handler:
Den docs auf handleSubmit
Hinweis:
Eine Funktion gemeint, die übergeben werden, zu
<form onSubmit={handleSubmit}>
oder<button onClick={handleSubmit}>
.
Es wird ausgeführt, Validierung, sowohl synchrone als auch asynchrone, und, wenn die form gültig ist,
es rufenthis.props.onSubmit(data)
mit dem Inhalt des Formulars als Daten.
Was mir fehlt ist ein Weg, um auch die Informationen über die-Taste gedrückt (z.B. das click-Ereignis), um meine onSubmit-handler, so dass ich sparen kann und die route wie vorgesehen.
- Ich habe ein ähnliches Problem, aber statt der Weiterleitung zu anderen Seiten, die ich auslösen müssen die Validierungen dynamisch basierend auf die Schaltfläche geklickt wird. Was ich möchte ist, dass auf Klick auf einen button, wird ein flag gesetzt (ex.
isSaveMode = true
) und auf der Grundlage dieser flag, ich auslösen müssen Validierungen auf bestimmte Felder, etwa so:<Field {...props} validate={isSaveMode && [validateRequiredText]}/>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viele Möglichkeiten, dies zu tun, aber Sie alle beinhalten das Anhängen der Taste Daten-je nachdem, welche Taste gedrückt wurde. Hier ist ein inline-version.
Den
handleSubmit
alle Griffe der überprüfung und so weiter, und wenn alles gültig ist, ruft die Funktion gegeben, um es mit dem Formular-Werte. Also geben wir ihm eine Funktion, fügt zusätzliche Informationen und AufrufeonSubmit()
.redux-form
:). Zweitens, tun Sie es arbeiten, aber es fühlt sich ein wenig hacky, wie ein hidden-Feld. Zum Beispiel habe ich in der Arbeit auf einem generischen Formular aus und vielleicht wird jemand verwenden Sie eine Eigenschaft mit dem Namenpill
. Ich möchte wirklich zu binden, die Funktion irgendwie und übergeben Sie es als ein weiteres argument.onSubmit
Funktion gibt ein Versprechen, in dem Fall müssen Sie warten, bis es zu lösen, zunächst:button onClick={handleSubmit(values).then( /*...*/ )}
isSaveMode = true
) und auf der Grundlage dieser flag, ich auslösen müssen Validierungen auf bestimmte Felder, etwa so:<Field {...props} validate={isSaveMode && [validateRequiredText]}/>
@mibbit "onSubmit" ist eine Funktion, die Sie definieren (zumindest ist es das, was der doc sagt: suchen Sie die onSubmit-Methode). Dies ist für die redux-form 7.x folgende Beispiel von @Erik R.