Javascript 如何使用reactjs验证对象数组

Javascript 如何使用reactjs验证对象数组,javascript,reactjs,Javascript,Reactjs,我正在创建react表单并验证表单字段, 如果字段为空,则错误消息如下所示,并且状态设置为“错误” 我还需要检查选择字段,选择字段是一个对象数组。如何检查选择选项是否为空 检查示例代码 您已经将所选选项保存到您的状态。因此,在validate函数中,您只需访问状态并检查所需的属性。还要确保与变量名保持一致。在validate函数中,您可以将返回值命名为formIsValid,但稍后调用该函数时,您将返回值用作errors,这令人困惑。我将formIsValid重命名为hasrerrors以保持一

我正在创建react表单并验证表单字段, 如果字段为空,则错误消息如下所示,并且状态设置为“错误”

我还需要检查选择字段,选择字段是一个对象数组。如何检查选择选项是否为空

检查示例代码

您已经将所选选项保存到您的状态。因此,在
validate
函数中,您只需访问状态并检查所需的属性。还要确保与变量名保持一致。在
validate
函数中,您可以将返回值命名为
formIsValid
,但稍后调用该函数时,您将返回值用作
errors
,这令人困惑。我将
formIsValid
重命名为
hasrerrors
以保持一致

  validate() {
    let required = ["name", "description"];
    let errors = {};
    let hasErrors = false;
    let data = this.state.data;

    required.forEach(w => {
      if (!data[w]) {
        hasErrors = true;
        errors[w] = "Please fill the required fields";
      }
    });
    this.setState({ errors: errors });

    // check if at least one option has been selected
    let currentLength = data.roles.length;
    if (!length) {
       hasErrors = true;
       erros["roles"] = "Please fill the required fields";
    }

    return formIsValid;
  }
只需像以前一样添加一个错误范围:

        <div className="form-group">
          <label>Roles</label>
          <Select
            isMulti
            value={this.state.roles}
            options={options}
            onChange={e => this.handleAccessChange(e)}
          />
          <span>{this.state.errors["roles"]}</span>
        </div>

角色
此.handleAccessChange(e)}
/>
{this.state.errors[“roles”]}

您已经将所选选项保存到您的状态。因此,在
validate
函数中,您只需访问状态并检查所需的属性。还要确保与变量名保持一致。在
validate
函数中,您可以将返回值命名为
formIsValid
,但稍后调用该函数时,您将返回值用作
errors
,这令人困惑。我将
formIsValid
重命名为
hasrerrors
以保持一致

  validate() {
    let required = ["name", "description"];
    let errors = {};
    let hasErrors = false;
    let data = this.state.data;

    required.forEach(w => {
      if (!data[w]) {
        hasErrors = true;
        errors[w] = "Please fill the required fields";
      }
    });
    this.setState({ errors: errors });

    // check if at least one option has been selected
    let currentLength = data.roles.length;
    if (!length) {
       hasErrors = true;
       erros["roles"] = "Please fill the required fields";
    }

    return formIsValid;
  }
只需像以前一样添加一个错误范围:

        <div className="form-group">
          <label>Roles</label>
          <Select
            isMulti
            value={this.state.roles}
            options={options}
            onChange={e => this.handleAccessChange(e)}
          />
          <span>{this.state.errors["roles"]}</span>
        </div>

角色
此.handleAccessChange(e)}
/>
{this.state.errors[“roles”]}

在您的代码中,没有验证角色的逻辑

因此,需要以下内容:

validate(){
let required=[“名称”、“说明”];
让错误={};
设formIsValid=false;
让data=this.state.data;
必需。forEach(w=>{
如果(!数据[w]){
formIsValid=true;
错误[w]=“请填写必填字段”;
}
});
if(this.state.roles.length==0){
formIsValid=false;
错误[“角色”]=“请至少选择一个角色”;
}
this.setState({errors:errors});
返回formIsValid;
}

在代码中没有验证角色的逻辑

因此,需要以下内容:

validate(){
let required=[“名称”、“说明”];
让错误={};
设formIsValid=false;
让data=this.state.data;
必需。forEach(w=>{
如果(!数据[w]){
formIsValid=true;
错误[w]=“请填写必填字段”;
}
});
if(this.state.roles.length==0){
formIsValid=false;
错误[“角色”]=“请至少选择一个角色”;
}
this.setState({errors:errors});
返回formIsValid;
}

只是一个建议,您应该查看一下您想检查在选择字段中是否至少有一个选项作为选择?您首先需要假设表单有效,然后如果发现错误,将变量设置为false:只是一个建议,您应该查看一下,是否要检查选择字段中是否至少有一个选项已被选择?您需要首先假定表单有效,然后在发现错误时将变量设置为false: