2017-08-18 1 views
0

Ich möchte das Formular vor der Einreichung validieren und einen allgemeinen Fehler in der unteren anzeigen, anstatt Fehler an ein bestimmtes Feld anfügen. errros.fieldname = "Alter> 10". Wenn keine Fehler auftreten, wird eine Nachricht angezeigt, um die Übermittlung fortzusetzen, und nach Bestätigung wird Formular-Senden aufgerufen.redux-forms vor Validierung vor der Einreichung

Was ist der richtige Ansatz für die Verwendung von Redux-Formen?

BeforeValidate(values) 
    { 
    if (<<some validation condition>>) { 
     this.setState({err:"Error"}) 
     return; 
    } else 
    { 
     this.setState({DialogOpen:true, err:""}) 
    } 
    } 

Um die gemeinsame Fehlermeldung anstatt als error.text irgendwo des Anbringens in Render-Funktion

&nbsp;{ this.state.err !='' && 
          <span className="text text-danger"><strong>No Value selected! 
</strong></span> 
        } 

Das Problem Wert ist nicht in Funktion definiert BeforeValidate . Die Synchronisierungsprüfung, die in Redux-Form bereitgestellt wird, bietet keine Möglichkeit, die allgemeine Fehlermeldung festzulegen. Nicht sicher asynch-validate ist der richtige Ort. So bin ich gefangen. Bitte helfen Sie.

Antwort

1

Sie können normale validate Funktion verwenden und _error hinzufügen. Es wird für die ganze Form kein Fehler sein.

const validate = ({ options }) => { 
    const errors = {}; 
    if (options.length === 0) errors._error = 'required'; 
    return errors; 
}; 

In Ihrem Formular render Verwendung this.props.error für Formfehler zu überprüfen. Etwas wie folgt aus:

render() { 
    const { handleSubmit, onSubmit, submitting, error, submitFailed } = this.props; 
    return (
     <View> 
     {error && 
      <FormValidationMessage> 
      {I18n.t(error)} 
      </FormValidationMessage>} 
     </View> 
    ); 
    } 
+0

Sie können auch ein Objekt wie '{Feldname:‚erforderlich‘} return' und es wird ein Fehler auf einem Feld angebracht sein. –

Verwandte Themen