javascript - 如何使用reactjs验证对象数组

标签 javascript reactjs

我正在创建 react 表单并验证表单字段, 如果该字段为空,则会出现如下所示的错误消息,并且状态设置为错误。

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

查看示例代码 https://codesandbox.io/s/flamboyant-flower-2u1xw

最佳答案

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

  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>

关于javascript - 如何使用reactjs验证对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57869865/

相关文章:

javascript - 在Mysql中将坐标保存为多边形类型

javascript - 是否可以使用pjax "Reload everything except"?

Javascript 替换单引号不起作用

javascript - 如何在异步函数中测试 jest.fn().mock.calls

javascript - react : Send ref back to container component?

reactjs - 如何使用 SMTP 从 React 应用程序发送电子邮件

Javascript:for循环中的 map 总是返回最后一项

javascript - 将非 ASCII 字符(元音变音、重音符号...)转换为其最接近的 ASCII 等效字符(用于创建 slug)

javascript - Javascript 中按键事件的限制

reactjs - React-leaflet 自定义组件 - 上下文未传递?