首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用错误数组响应验证输入字段

使用错误数组响应验证输入字段
EN

Stack Overflow用户
提问于 2022-01-24 12:51:44
回答 2查看 348关注 0票数 0

我想对HTML字段应用一些验证规则,并在每次检查不通过时将错误消息添加到errors状态数组中。

代码语言:javascript
复制
<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>
代码语言:javascript
复制
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');
  }
}

更新:

代码语言:javascript
复制
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数组中的输入字段验证(最后显示所有消息)以将单个值推送到数组中,然后删除它?

EN

回答 2

Stack Overflow用户

发布于 2022-01-24 13:09:13

我想你错过了设定状态。

代码语言:javascript
复制
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
  }
}
票数 0
EN

Stack Overflow用户

发布于 2022-01-24 13:42:15

您可以参考这段代码https://www.codegrepper.com/code-examples/javascript/push+unique+values+in+array+javascript

代码语言:javascript
复制
const myArray = ['a', 1, 'a', 2, '1'];
const unique = [...new Set(myArray)]; // ['a', 1, 2, '1']

设置在javascript存储唯一的值,所以它将是有帮助的。您可以应用以下代码

代码语言: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]
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70834165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档