2016-10-14 4 views
-5

Ich versuche, das Redux Warenkorb Beispiel neu zu erstellen. Aber ich finde es schwierig, die folgende Codezeile zu verstehen, weil ich irgendwie neu in Sachen ES6 bin.Was bedeutet "[productId]: (state [productId] || 0) + 1"?

[productId]: (state[productId] || 0) + 1

+0

Schlüssel ist Wert der Variablen productId, value ist (state [productId] oder 0 wenn state [productId] falsch ist) + 1 –

+0

Meine Glaskugel sagt mir, dass Sie [berechnete Eigenschaft namens] (https: // developer .mozilla.org/de/docs/Web/JavaScript/Referenz/Operatoren/Object_initializer # Computed_property_names) und [logische Operatoren] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators) ... – ASDFGerte

+0

'Glaskugel' - mach weiter so, und du kannst dir schließlich einen Kristall leisten: p –

Antwort

1

Nun, die Datei erneut lesen. Hier ist, wo intialState erstellt:

const initialState = { 
    addedIds: [], 
    quantityById: {} 
} 

Jetzt ist quantityById Funktion. Es ist initialState.quantityById als state übergeben.

const quantityById = (state = initialState.quantityById, action) => { 

Die folgende Zeile spread operator wird mit dem Objekt zurückzugeben, zu konstruieren.

 return { ...state, 
     [productId]: (state[productId] || 0) + 1 
     } 

{ ...state Mittel nehmen Sachen aus state Variable, das alle Eigenschaften bedeuten, wird in einem neuen Objekt sein wird. Dann wird [productId]: (state[productId] || 0) + 1 Sollwert von [productId] an Wert von geben state Objekt state[productId] oder 0 wenn diese ID nicht auf state Objekt war und füge 1 zu.

Insgesamt wird diese Linie [productId] hinzufügen, wenn es nicht weitergegeben state Objekt oder zu aktualisieren ist, nachdem es von state Objekt kopiert wird. Weitere Informationen über spread operator finden Sie auch hier.

Hoffe, das hilft!