2017-09-05 19 views
1

私はReduxでReactアプリケーションを作成しています。Redux状態ストアのオブジェクト内に新しいキーと値のペアを追加するにはどうすればよいですか?

レデューサーでは、オブジェクトのリストのオブジェクト内にフィールドを追加するにはどうすればよいですか?どのように私はそれがこのように見えるようです

items: [ 
    { 
     name: "Bob", 
     age: 25 
    }, 
    { 
     name: "Sally", 
     age: 17, 
    }, 
    { 
     name: "Charles", 
     age: 54 
    }, 
    { 
     name: "Derrick", 
     age: 34 
    } 
] 

例えば、私の状態は次のように見えるかもしれませんか?

items: [ 
    { 
     name: "Bob", 
     age: 25, 
     selected: false 
    }, 
    { 
     name: "Sally", 
     age: 17, 
     selected: false 
    }, 
    { 
     name: "Charles", 
     age: 54 
     selected: false 
    }, 
    { 
     name: "Derrick", 
     age: 34    
     selected: false 
    } 
] 

基本的には、オブジェクトにフィールドを追加し、配列の各オブジェクトに適用したいと考えています。

私はそれのためのアクションを作成したと減速で、私は本当に適切な構文が何であるか見当がつかないか、それも可能だ場合

case ADD_FIELD: 
    return { 
     ...state, 
     items: [ 
      ...state.items, 
      ...{ 
       selected: false 
     } 
     ], 
    }; 

のようなものを試してみました。どんな助けでも大歓迎です。

答えて

2

あなたはデータに#array.mapを実行し、各オブジェクトとの1つの以上のキーを追加する必要があります。このよう

case ADD_FIELD: 
    return { 
     ...state, 
     items: state.items.map(el => ({ 
      ...el, 
      selected: false 
     })) 
    }; 
+0

ありがとうございました。これは私を助けた! – noblerare

2

Array.prototype.mapは、次のコードのように使用できます。

var items = [ 
 
    { 
 
     name: "Bob", 
 
     age: 25 
 
    }, 
 
    { 
 
     name: "Sally", 
 
     age: 17, 
 
    }, 
 
    { 
 
     name: "Charles", 
 
     age: 54 
 
    }, 
 
    { 
 
     name: "Derrick", 
 
     age: 34 
 
    } 
 
]; 
 

 
var result = items.map(item => Object.assign({}, item, { selected: false })); 
 

 
console.log(result);

関連する問題