Я работаю над проектом React, внедряю проверку электронной почты и устанавливаю состояние true, когда оно не проходит, и false, когда это происходит.Часть проверки работает, но получает неопределенное состояние на втором onSubmit.
Немного подробнее: я проверяю состояние onChange и onSubmit.OnChange, кажется, работает как ожидалось.onSubmit работает при первом щелчке / отправке, но при следующем щелчке / отправке изменяет состояние на «неопределенное», и я понятия не имею, почему.
Лучше всего посмотреть мой кодовый блок и начать заполнять поле электронной почты и проверять консоль, пока я регистрирую состояние.
Вот фрагмент кода:
this.state = {
inputs: {
name: '',
email: '',
message: '',
},
show: true,
errors: {
name: false,
email: false,
message: false,
},
};
validateEmail(email) {
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
handleOnChange = e => {
const { name, value } = e.target;
const emailInput = e.target.value;
const emailValid = this.validateEmail(emailInput);
if (name === 'email') {
this.setState({
inputs: {
email: emailInput,
},
errors: {
email: !emailValid,
},
});
} else {
this.setState({
inputs: {
...this.state.inputs,
[name]: value,
},
errors: {
...this.state.errors,
[name]: false,
},
});
}
console.log('errors.email onChange = ' + this.state.errors.email);
};
Итак, почему это происходит?и как я могу решить?