2017-11-01 13 views
0

私はReact/Reduxアプリケーションを持っていて、サーバから投稿を受け取りました。今、他の例のために、私はObject.assign構文に苦しんでいます 部分的にobject.assingを使ってRedux状態を更新する

function posts(
    state = { 
     items: [] 
    }, 
    action 
) { 
    switch (action.type) { 
     case RECEIVE_POSTS: 
      return Object.assign({}, state, { 
       items: action.posts, 
      }) 
     case ADD_POST: 
     default: 
      return state 
    } 
} 

:これまでのところ、私は右、次のように見える私の減速、中RECEIVE_POSTSを得ました。 action.postに含まれる新しく作成された投稿が既存のアイテムに追加されるADD_POSTの場合、状態をどのように更新すればよいですか?

答えて

2

CREATE_POSTはポストデータを受け取るに基づいてADD_POSTを参照とすると、それはこのようになりませんでしょう:

case CREATE_POST: 
    return {...state, items: state.items.concat(action.post)}; 

割り当てるオブジェクトを使用する必要が以来することができますあなたの状態から、既存のポストにちょうどconcatあなたのポスト。覚えているように、concatは状態の変更を行わず、postが追加された新しい配列を返します。

1

これは、アレイ内の単一のポストが

function posts(
    state = { 
     items: [] 
    }, 
    action 
) { 
    switch (action.type) { 
     case RECEIVE_POSTS: 
      return Object.assign({}, state, { 
       items: action.posts, 
      }) 
     case CREATE_POST: 
      return Object.assign({}, state, { 
       items: [...state.items, ...action.post] 
      }) 
     default: 
      return state 
    } 
} 
+0

おかげ渡されていると仮定して行われます。しかし、それは前の投稿を上書きしないだろうか?新しく作成された投稿は、既存のアイテムに追加する必要があります。 – user1934212

+0

申し訳ありません今すぐ回答を更新しました –

関連する問題