Как обновить форму с данными об ошибках после неудачной отправки?
Я использую реакционную форму.
<Form
onSubmit={
(values) => makeAPICall(values).catch(e => ????)
}
>
...
<Field name='name'>
...
</Filed>
...
</Form>
Допустим, ошибка, которая возвращается, заключается в том, что имя не уникально.
Я хотел бы установить ошибку на Field
на основании сообщения от e
,
Я не могу понять, как изменить состояние формы изнутри catch
,
1 ответ
Решение
react-final-form
В проекте есть коды и окно обработки ошибок при отправке.
Это здесь: 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>
)}
/>