Я использую React с Formik для создания формы управления. (Error Handling, submission etc)
. У меня небольшие проблемы с обработкой ошибок с сервера.
Чтобы решить эту проблему, я использовал встроенный Formik <ErrorMessage />
. Итак, в первый элемент формы я добавил его. Как показано ниже:
<form onSubmit={handleSubmit}>
<div className="pb-2">
<label className="font-weight-bold" htmlFor="username">
Username <Asterisk />
</label>
<Field
validate={this.debounceUsernameValidation}
className={classNames('form-control', {
'is-invalid': errors.username && touched.username
})}
placeholder="Username (Required)"
autoComplete="false"
name="username"
type="text"
/>
{errors.username && touched.username ? (
<div className="text-danger">{errors.username}</div>
) : null}
</div>
<ErrorMessage name={errors.username} component="div" className="text-danger small" />
</form>
Но я получаю следующую ошибку:
Uncaught Invariant Violation: Objects are not valid as a React child (found: object with keys {}). If you meant to render a collection of children, use an array instead.
Я не уверен, что сделал неправильно. Не могли бы вы помочь мне справиться с этим и дать мне понять, в чем заключается эта ошибка? Я имею в виду ошибки, которые исходят либо со стороны сервера, либо со стороны клиента, должны быть объектом.
И когда Реакт говорит If you need to be an object, use an array instead
. Я действительно не понимаю. Спасибо за ваше время.
Ошибка объекта. Это генерируется Yup, который работает в сочетании с Formik:
{ "username": "Username is Required", "password": "Password is required", "confirmPassword": "Password Confirmation is Required", "group": "Group is required" }