Причина, по которой он не проверяется, заключается в том, что вы переходите к Field
this.state.userAccountData['name']
и onChange={this.handleChange}
.
У Formik уже есть состояние для хранения всех данных из вашей формы, вам не нужно сохранять их в состоянии компонентов.
Когда вы добавляете onChange={this.handleChange}
в поле, вы изменяете состояние компонента, но не изменяете состояние Formik
, поэтому проверка не запускается.
Я не уверен, почему вы держите name
в состоянии, но если у вас нет причин, по которым они не нужны.
// formik already handle the state for you inside `values`
handleChange = event => {
this.setState({
userAccountData: Object.assign(
{},
this.state.userAccountData,
{ [event.target.name]: event.target.value }
),
})
}
// Formik already handles the value and the onChange of the input
<Field type="text" name="name" className="trans text_input" placeholder="Enter your name" value={this.state.userAccountData['name']} onChange={this.handleChange} />
Единственное, что вам нужно, это установить name
prop поля, чтобы оно соответствовало проверке.
// this is enough
<Field type="text" name="name" className="trans text_input" placeholder="Enter your name" />