提交失败后如何用错误数据更新表单?

How to update a form with error data after unsuccessful submit?

我正在使用 react-final-form

<Form
  onSubmit={
    (values) => makeAPICall(values).catch(e => ????)
  }
>
...
  <Field name='name'>
    ...
  </Filed>
...
</Form>

假设返回的错误是关于名称不唯一的。

我想根据来自 e 的消息在 Field 上设置错误。

我不知道如何从内部修改表单状态 catch

react-final-form项目有一个关于提交错误处理的codesandbox。
在这里:https://codesandbox.io/s/9y9om95lyp

基本上,在您的表单渲染道具中,您必须向其传递一个包含 submitError 的解构对象,并检查您的字段中是否存在提交错误。

<Form
  onSubmit={values => makeAPICall(values).catch(e => return { username: e })}
  // ...
  render={({
    handleSubmit,
    values,
    // ...
   }) => (
    <form onSubmit={handleSubmit}>
      <Field name="username">
        {({ input, meta }) => (
          <div>
            <label>Username</label>
            <input {...input} type="text" placeholder="Username" />
            {meta.submitError && meta.touched && <span>{meta.submitError}</span>}
          </div>
        )}
      </Field>
    </form>
   )}
/>