javascript - 如何在 React setState 中使用方括号?

标签 javascript forms validation loops reactjs

我正在遍历字段,验证它们,如果验证失败,我想在此循环内设置验证状态:

Object.keys(validatedFields).map(field => {
  if (validateExists(field.value) === false) {
    this.setState({ validatedFields[field].message: 'error' })
    formIsValid = false
  }
})

但是,我得到一个语法错误:

Unexpected token:
this.setState({ validatedFields[field].message: 'error' })
                               ^

如何使用这种“动态” key ?

最佳答案

对于动态state键,你可以使用Computed Property

例子:

const a = 'apple'

this.setState({
  [a]: 10 // is same as {apple: 10}
})

在您的场景中,我不确定您希望您的 state 结构看起来如何,但是如果您希望 state 键为 validatedFields [字段],那么你可以这样做:

this.setState({
  [validatedFields[field]]: 'error'
})

如果你想让message嵌套在它下面,那么你可以这样写:

this.setState({
  [validatedFields[field]]: {
    message: 'error'
  }
})

关于javascript - 如何在 React setState 中使用方括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38899884/

相关文章:

javascript - 将 Canvas 拉伸(stretch)至完整宽度和高度以动态调整大小

javascript - 如何使用一个 Controller 方法返回 FileResult 和 View

forms - 如何使用从 form.io 的表单生成器中的 api 获取的值加载数据网格组件?

asp.net-mvc - .NET MVC 和 SalesForce 下拉列表问题

java-如何使用循环验证函数检查文本字段列表

javascript - FlatList 在 React Native 中没有显示任何内容

javascript - 从 angularjs 调用 REST 服务时本地主机上的 CORS 问题

javascript - 使用 JQuery 从模态( Bootstrap )传递输入数组

php - 在 Laravel 5 中验证动态添加的输入字段

validation - Ghostscript 作为 PDF 验证器 : Command and Results