2017-04-04 1 views
0

Ich lerne react-native. Ich kam in dieser Syntax von ES6ES6 Syntax Objekt Kurze Notation und berechnete Eigenschaften

Erste Syntax

this.state = { 
    refreshing: false, 
}; 

Zweite Syntax

this.state = {[refreshing]: false}; 

Wird es gleiche Aufgabe erfüllen? Wenn diese Zeile Code gleicher Aufgabe dann, was der Unterschied zwischen Objekt Kurz Notation und Computed Eigenschaften ist

+0

Wird es überhaupt funktionieren? – zeroflagL

+0

@zeroflagL was? –

+0

Läuft die zweite Aussage überhaupt? Es ist kein gültiges JavaScript. – zeroflagL

Antwort

0

Nein, sie sind völlig verschieden:

const state = { 
    refreshing: false, 
}; 
console.log(state); // { refreshing: false } 

In Ihrem zweiten Beispiel:

const state = {[refreshing]: false}; 
// Error: refreshing is not defined 

Diese ist, weil berechnete Eigenschaften innerhalb des zugänglichen Bereichs nach einer Variablen namens refreshing suchen. Zum Beispiel:

const refreshing = "example"; 
const state = { [refreshing]: false }; 
console.log(state); // { example: false } 

Also das Äquivalent zu Ihrem ersten Beispiel in berechnete Eigenschaft Syntax wäre:

const key = "refreshing"; 
const state = {[key]: false}; 
console.log(state); // { refreshing: false } 

Aber Sie würden diese nur verwenden, wenn Sie nicht key im Voraus wissen.

+0

erfrischend ist const variabel in meinem Fall auch dann sind beide gleich? Was meinst du mit "Aber du würdest das nur benutzen, wenn du den Schlüssel nicht rechtzeitig kennst." –