当我静态地使用setState
用户名的值时,我曾经使用下面的代码在变量名中设置值。
this.setState({ 'userName' : event.target.value })
但是当我以前在相同的键名中设置相同的值但这次是动态地相同时。
在我的HTML属性中,我将名称设置为userName
,并在事件中调用onChange
。在该event.target.name
中,我得到了userName
,在event.target.value
中,我得到了键入的值,但是在setState
期间,以下代码不起作用:
this.setState({ event.target.name : event.target.value })
相反,我曾经使用可以正常工作的[event.targe.name]
来设置密钥:
this.setState({ [event.target.name] : event.target.value })
实际上我需要的是,以上两个代码之间有什么区别,以及它如何静态和动态地工作?
以下是语法错误:
this.setState({ event.target.name : event.target.value })
以下表示event.target.name
的值将为键名称:
this.setState({ [event.target.name] : event.target.value })
换句话说:
{ name: value }
表示object.name = value
,表示将value
分配给"name"
键。{ [name]: value }
表示object[name] = value
,表示将value
分配给具有name
]值的键。