2016-12-23 4 views
-1

React & Reduxをよく理解しようとしています。最近、私はここに例を使用している:https://github.com/reactjs/redux/blob/master/examples/shopping-cart/src/reducers/products.js
を私は困難これらの行を把握持っています: ... action.products.reduce((OBJ、製品)=> { OBJ [product.id] =製品 リターンOBJを }、{})理解に問題があるReact構文

と[商品コード]:製品(状態[商品コード]、アクション)

は、誰かが、何が起こっているのかしてください説明できますか?

const byId = (state = {}, action) => { 
    switch (action.type) { 
    case RECEIVE_PRODUCTS: 
     return { 
     ...state, 
     ...action.products.reduce((obj, product) => { 
      obj[product.id] = product 
      return obj 
     }, {}) 
     } 
    default: 
     const { productId } = action 
     if (productId) { 
     return { 
      ...state, 
      [productId]: products(state[productId], action) 
     } 
     } 
     return state 
    } 

答えて

0

あなたの質問は不明ですが、私は自分の能力を最大限に引き出そうとします。 ...(3ドット)はspread operatorと呼ばれ、オブジェクト(または配列)を別のオブジェクト(または配列)に「マージ」する方法です。ここでは例があります:

const objA = { 
    field_1: "my value", 
    field_2: "my other value" 
}; 
const newObject = { 
    ...objA, 
    field_3: "my third value" 
}; 
console.log(newObject); // { 
         // field_1: "my value", 
         // field_2: "my other value", 
         // field_3: "my third value" 
         // } 

それは基本的には次と同等です:

const objA = { 
    field_1: "my value", 
    field_2: "my other value" 
}; 
const newObject = Object.assign({}, objA, { field_3: "my third value" }); 

は私の例よりも多くのことにありますので、マニュアルを参照してください。

[productId]: products(state[productId], action)は、変数をオブジェクトキーとして使用する方法です。

let objA = { 
    field_1: "my value", 
}; 
const myKey = "field_2"; 
objA[myKey] = "my other value"; 

技術的には、React構文ではなく、ES6-7の構文に従います。

+0

私はES6の学習を開始する必要があります。ありがとうNikolaj。 – olafsadventures

関連する問題