我想对HTML字段应用一些验证规则,并在每次检查不通过时将错误消息添加到errors状态数组中。
<input
name="email"
type="email"
value={ email }
placeholder="Type your email address here..."
onChange={ handleChange }
/>
<button
className="Form_Submit"
onClick={ handleSubmit }
>
<i className="fas fa-arrow-right" />
</button>handleSubmit() {
const {
values: {
email = '',
errors = []
} = {}
} = this.state;
if (!validateEmailAddress(email)) {
errors.push('Please provide a valid e-mail address');
}
if (isEmpty(email)) {
errors.push('Email address is required');
}
}更新:
if (!validateEmailAddress(email)) {
this.setState({
errors: [...errors, 'Please provide a valid e-mail address']
});
}
if (isEmpty(email)) {
this.setState({
errors: [...errors, 'Email address is required']
});
}以下语法不占用组件更新时间,因此每次单击submit按钮时,我都会收到4-8条消息。是否有方法处理errors数组中的输入字段验证(最后显示所有消息)以将单个值推送到数组中,然后删除它?
发布于 2022-01-24 13:09:13
我想你错过了设定状态。
handleSubmit() {
const {
values: {
email = '',
errors = ''
} = {}
} = this.state;
if (!validateEmailAddress(email) && !errors.contains('Please provide a valid e-mail address')) {
errors.push('Please provide a valid e-mail address')
}
if (!!email && !errors.contains('Email address is required')) {
errors.push('Email address is required');
}
setValues({...rest, errors});
if (!errors.length) {
doFunc(); //your expected function
}
}发布于 2022-01-24 13:42:15
您可以参考这段代码https://www.codegrepper.com/code-examples/javascript/push+unique+values+in+array+javascript
const myArray = ['a', 1, 'a', 2, '1'];
const unique = [...new Set(myArray)]; // ['a', 1, 2, '1']设置在javascript存储唯一的值,所以它将是有帮助的。您可以应用以下代码
const errorSet = new Set([...this.state.errors]);
if (!validateEmailAddress(email)) {
errorSet.add('Please provide a valid e-mail address');
}
if (isEmpty(email)) {
errorSet.add('Email address is required');
}
this.setState({
errors: [...errorSet]
});https://stackoverflow.com/questions/70834165
复制相似问题