2016-10-14 2 views
-5

私はreduxショッピングカートの例を再作成しようとしています。しかし、次のコード行を理解するのは難しいと思っています。「[productId]:(state [productId] || 0)+ 1」とはどういう意味ですか?

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

+0

キーは変数productIdの値です。値は(状態[productId]または状態[productId]がfalseの場合は0)+ 1 –

+0

私のガラス球は[計算されたプロパティ名](https:// developer .mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names)と[論理演算子](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators)... – ASDFGerte

+0

'ガラスボール' - 良い仕事を続けて、結局あなたはクリスタルを買う余裕ができます:p –

答えて

1

さて、もう一度ファイルを読み込みます。 intialStateが作成されたのはここです:

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

quantityById機能です。それはinitialState.quantityByIdとしてstateとして渡されます。

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

次の行は、返すオブジェクトを構築するためにspread operatorを使用しています。

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

{ ...statestate変数からのものを取ることを意味、これはすべてのプロパティは、新しいオブジェクトになります意味します。その後[productId]: (state[productId] || 0) + 1は、このidがstateオブジェクトでなかった場合は合格stateオブジェクトstate[productId]または0からの値に[productId]の値を設定し、それに1を追加します。

stateオブジェクトからコピーされた後に、stateオブジェクトまたは更新が渡されていない場合は、全体でこの行に[productId]が追加されます。

さらに詳しい情報はspread operatorにあります。

希望すると便利です。

関連する問題