【发布时间】:2021-08-31 18:14:13
【问题描述】:
即使firstName 和lastName 字段为空,以下函数始终在组件的第一次渲染时提交表单。
const [formErrors, setFormErrors] = useState({});
const registerUser = () => {
if (firstName === "") {
setFormErrors((prev) => {
return { ...prev, firstName: "Firstname is required!" };
});
}
if (lastName === "") {
setFormErrors((prev) => {
return { ...prev, lastName: "Lastname is required!" };
});
}
if (Object.keys(formErrors).length === 0) {
console.log("Form Submitted");
} else {
console.log("Failed");
}
}
在第一次渲染时,Object.keys(formErrors).length 的值为 0,但是错误显示在屏幕上,奇怪!。
我尝试使用useRef,它有效,但它不会在屏幕上显示错误,因为组件不会使用useRef 重新渲染。
如果错误仍然存在,如何防止提交此表单?
谢谢
【问题讨论】:
标签: reactjs react-native validation react-hooks