为什么状态在更新时会以这种方式表现

时间:2019-12-19 19:53:28

标签: javascript reactjs ecmascript-6

我的状态就像

Folder2

我有表格来更新状态,
每个文本输入都有onchange,例如"paths": { "Folder1.2/*": [ "../Folder1/Folder1.2/*" ], }
而我的hndleOnChange函数是:

this.state = {
      data: [],
      dataloaded: false,
      isopen: false,
      firstname: '',
      lastname:'',
      email:'',
      gender: '',
      avatar: '',
      number:'',
      dob:new Date()
    };

这不起作用 这不是更新状态 但是如果我这样做

onChange={this.handleOnChange("firstname")}

这有效

为什么在对象名前面加上方括号会正确?

1 个答案:

答案 0 :(得分:7)

添加方括号意味着该变量的value成为对象键。不带括号的文字名称将成为对象键。例如:

const key = "name";

const object = {
    key: "My Key",
    name: "My Name"
};

obj.key // "My Key"
obj[key] // "My Name" -> equivalent to obj["name"] or object.name

请查看MDN的Working with Objects,以获取更多信息。

在这种情况下,此代码:

handleOnChange = field => event => {
    console.log(event.target.value,field)
    this.setState({field: event.target.value})
}

正在尝试设置一个名为field的状态属性,而不是与该字段变量的值相关联的状态属性。