我正在开设一个在线课程,我们必须使用react构建一个列表跟踪器应用程序。尝试设置其中一个类的状态时遇到了问题。在这种状态下,我有一个等于一个对象的变量。我试图可变地设置这个对象的名称和值,但我不确定如何设置名称变化。
let name = this.props.idName;
this.setState((prevState) => {
return {
newItem: { name: item}
};
}, () => {
this.props.addItem(this.state)
});
如您所见,我尝试将此对象中的键设置为等于变量name
,但这只是将其设置为name
的值,而不是name
的值。 1}}变量。
答案 0 :(得分:3)
你可以试试这个。只需将名称括在方括号中即可。有关https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names的更多信息。
let name = this.props.idName;
this.setState((prevState) => {
return {
newItem: { [name]: item}
};
}, () => {
this.props.addItem(this.state)
});
var k = "key";
var obj = {[k]: "VALUE"}
console.log(obj);
答案 1 :(得分:0)
您可以将对象视为字典:
$ node
> let name = 'Nyan'
undefined
> let omg = { newItem: {} }
undefined
> omg
{ newItem: {} }
> omg['newItem'][name] = 'item' // note the quotes in this statement
'item'
> omg
{ newItem: { Nyan: 'item' } }