React表单验证时,如何同时检查多个输入框不能为空?
我在做注册表单时遇到问题,用户名和邮箱两个输入框都需要验证不能为空。现在用了useState保存表单数据,提交时只检查了用户名是否为空,但邮箱没检查到还是会提交成功,该怎么同时验证多个字段?
现在代码是这样写的:
handleSubmit = (e) => {
e.preventDefault();
if (this.state.username) {
alert('提交成功');
} else {
alert('用户名不能为空');
}
}
这样邮箱输入框即使为空也能提交,该怎么把邮箱也加到验证条件里?手动写多个if else会不会太麻烦?
要是字段多了可以抽个验证函数,返回第一个不通过的错误信息。别写一堆if else把自己绕晕了。
这样写虽然看起来要写多个 if,但结构清晰,比嵌套的条件判断更容易维护。如果你想进一步优化,可以考虑用 reduce 或者循环来处理多个字段:
当然这只是基础验证,真实项目里建议用表单验证库(比如 yup + formik),或者至少用 HTML5 的 required 属性辅助验证。