如何将属性名称设置为变量?

时间:2017-11-29 23:52:17

标签: javascript reactjs object

我正在开设一个在线课程,我们必须使用react构建一个列表跟踪器应用程序。尝试设置其中一个类的状态时遇到了问题。在这种状态下,我有一个等于一个对象的变量。我试图可变地设置这个对象的名称和值,但我不确定如何设置名称变化。

let name = this.props.idName;
this.setState((prevState) => {
    return {
        newItem: { name: item}
    };
}, () => {
this.props.addItem(this.state)
});

如您所见,我尝试将此对象中的键设置为等于变量name,但这只是将其设置为name的值,而不是name的值。 1}}变量。

2 个答案:

答案 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' } }