2017-11-29 3 views
0

Ich arbeite an einer Online-Klasse, für die wir eine List Tracker-Anwendung mit react erstellen müssen. Ich hatte Probleme, als ich versuchte, den Status einer meiner Klassen festzulegen. In diesem Zustand habe ich eine Variable, die einem Objekt entspricht. Ich versuche, sowohl den Namen als auch den Wert dieses Objekts variabel festzulegen, jedoch war ich unsicher, wie der Name variabel gesetzt werden sollte.Wie setze ich den Eigenschaftsnamen auf Variable?

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

Wie Sie sehen können, versuche ich den Schlüssel in diesem Objekt gleich der Variable name, aber dies nur setzt es auf den Wert von name eher als der Wert der der name Variable.

Antwort

3

Sie können dies versuchen. Einfach den Namen in eckige Klammern setzen. Mehr dazu 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

Link zu der Dokumentation für berechnete Eigenschaften: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenz/Operatoren/Object_initializer # Berechnete_Eigenschaftsnamen – CRice

0

Sie können Objekte wie Wörterbücher betrachten:

$ 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' } } 
Verwandte Themen