2017-03-03 2 views
1

Ich hätte gerne eine zweiteilige Submit-Strategie für meine Redux-Form. Zuerst ruft der Benutzer das Formular ab, das eine Validierungsmethode aufruft. Die Antwort könnte einige Warnungen enthalten. Ich möchte, dass der Benutzer die Warnungen (falls vorhanden) sieht und optional mit einem weiteren Senden fortfährt, das ein echter POST für die Server-Rest-API ist.Kann ich handleSubmit als Reaktion auf eine Statusänderung mit redux-form automatisch aufrufen?

Wenn keine Warnungen vorhanden sind, möchte ich, dass die Komponente automatisch gesendet wird. Ich versuche, dies aus der componentWillReceiveProps Methode zu lösen.

Das Problem ist, dass nextProps.handleSubmit(this.doSubmit2of2); nicht this.doSubmit2of2 aufrufen. Die Ausführung geht nur über diesen Aufruf hinaus.

componentWillReceiveProps(nextProps) {   

    //boolean that indicates validation just occured against the server 
    if (nextProps.storeWithValidation) { 

     //the user hit submit, first it was validated, if no issues, go ahead and try to create 
     if (nextProps.storeValidationOk) { 
      //fire off create store 
      nextProps.handleSubmit(this.doSubmit2of2); 
     } 
     else { 
      //there are validation issues of some kind, let the user see them 
      //do nothing here and let the render method do its thing with the props 
     } 
    } 
} 

Ich habe die Diskussion hier: https://github.com/erikras/redux-form/issues/67, aber die in meinem Fall als Ergebnis einer bestimmten Serverantwort geschieht einreichen. Außerdem erkenne ich, dass es Validierungsmerkmale der Redux-Form gibt. Entwerfe ich zu weit außerhalb der geplanten Rahmenkonvention?

Ich habe auch über die Neugestaltung meiner Server API nachgedacht, aber ich würde gerne wissen, wie weit ich mit diesem aktuellen Ansatz der automatischen Wiedervorlage nach einer Antwort vom Server gehen kann.

Antwort

1

Von dem, was ich verstehe, möchten Sie das Formular remote nach einer Antwort vom Server senden. Sie können eine Fernübertragung nach dieser example from the docs erstellen. Dann können Sie dispatch(submit('yourFormName')) wann immer Sie wollen so oft wie Sie möchten.

+0

Danke, ich folge dieser Lösung. Der Schlüssel scheint zu sein, Verzweigungslogik in der Submit-Methode durchzuführen. Ich werde später meine Lösung veröffentlichen. – Dranyar

Verwandte Themen