javascript - 提交按钮需要点击 2 次才能调用 React 中的函数
问题描述
当我单击提交按钮时,它需要单击才能正确触发该功能。在执行 if 语句之前我没有问题。它是否有一些事实,即我在里面有 2 个 if 语句,每次点击后它只检查 1 个 if 语句?
onSubmit = (e) => {
const { firstName, lastName, email, eventDate, validation} = this.state
if (firstName, lastName, eventDate, email) {
this.setState({validation: true})
if (new RegExp(/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,15}/g).test(email)) {
this.setState({validation: true})
} else {
this.setState({validation: false})
this.setState({errorMessage: 'Please enter correct email adress'})
}
} else {
this.setState({validation: false});
this.setState({errorMessage: 'Please fill in all fields properly'})
}
if (validation) {
const newEvent = {
firstName: this.state.firstName,
lastName: this.state.lastName,
email: this.state.email,
eventDate: this.state.eventDate
}
this.props.addEvent(newEvent);
this.setState({
firstName: '',
lastName: '',
email: '',
eventDate: '',
validation: false,
errorMessage: ''
});
}
e.preventDefault();
}
解决方案
您也不需要在彼此之后直接进行两个 setState 调用。将它们放在一个 setState 中,而不是像这样:
this.setState({ validation: false, errorMessage: '请输入正确的电子邮件地址', )}
推荐阅读
- cookies - 如何确保 CloudFront 从我的 Elastic Beanstalk REST API 应用程序返回 cookie
- snowflake-cloud-data-platform - 如何检查一个json是否包含雪花中的另一个json
- javascript - Angular 7在创建时间超过6个月时隐藏一个div
- python - 用用户输入列表替换列表
- android - Android 11 - 访问 Android/data 目录
- php - PHP AJAX登录表单运行AJAX失败代码
- html - 蓝色选择区域太大
- python - Django Session 没有得到适当的更新
- r - 我可以调整这段代码以获得我想要的吗?
- python-3.x - 尝试下载我当前的所有软件包以供离线使用时出现 PIP 错误