我的状态就像
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")}
这有效
为什么在对象名前面加上方括号会正确?
答案 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
的状态属性,而不是与该字段变量的值相关联的状态属性。