我正在尝试验证电话字段,以获取带有以下代码的所有字母和点。
validatePhone = () => {
const sanitizedPhone = this.state.phone.replace(/\D/g, '');
if (sanitizedPhone.length >= 10 && sanitizedPhone.length <= 11) {
this.setState({ phone: sanitizedPhone });
return true;
}
toast.error('Invalid phoneNumber.', {
position: "top-center",
autoClose: false,
closeOnClick: true,
});
return false;
}
当我尝试在
console.log(sanitizedPhone)
等输入中带有点的11.97.4.4.51234
时得到11974451234
,但是在此之后,在console.log(this.state.phone)
上我得到了较旧的数字11.97.4.4.51234
最佳答案
从react docs:
setState()并不总是立即更新组件。它可能会批量更新或将更新推迟到以后。这使得在调用setState()之后立即读取this.state可能是一个陷阱。
这就是为什么在使用setState之后看不到更改的原因。