簡體   English   中英

React - react-final-form 驗證

[英]React - react-final-form validation

在使用記錄級驗證時,我有一個關於 react-final 表單錯誤消息的問題。 我在 FormFilterFields 組件中有以下字段。

字段名稱:

export const fieldNames = {
  password: "field.password"
};

場地:

            <Field name={fieldNames.password}>
                  {({ input, meta }) => {
                    return (
                      <div className={styles.textInputContainer}>
                        <TextInput
                          type={"password"}
                          label={"password"}
                          value={input.value}
                          onChange={(event)=> {
                            input.onChange(event)
                          }}
                          error={meta.error}
                        />
                      </div>
                    );
                  }}
                </Field>

形式:

     <Form
        onSubmit={() => {}}
        initialValues={this.props.formValues}
        decorators={[formFilterFieldsDecorator]}
        validate={values => {
          const valuesObject: any = values
          const validationErrors = { errors: {} };

          if (valuesObject && valuesObject.field.password && valuesObject.field.password.length < 6){
            validationErrors.errors.field.password = "password is too short"; //errors.field.password is undefined here
          }

          return validationErrors;
        }}
        render={({
          handleSubmit,
          submitting,
          pristine,
          values,
          form,
          invalid
        }) => (
          <form onSubmit={handleSubmit}>
            <FormFilterFields
              form={form}
              onSubmit={event => this.props.onHandleSubmit(event, values)}
              onReset={event => this.props.onHandleReset(event, form)}
            />
            <pre>{JSON.stringify(values)}</pre>
          </form>
        )}
      />

所以本質上你將如何為字段名稱設置錯誤消息,如下所示:

“字段.密碼”

我看過一些例子,但沒有骰子。替代方法是字段級驗證,這是我作為解決方案的一部分的最后手段。

任何幫助將非常感激

謝謝

你試過了嗎

validationErrors.errors['field.password'] = "password is too short";

編輯試試這個

if (!values.field || !values.field.password) {
      errors.field = {password: 'Required'};
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM