2017-10-19 10 views
-1

に追加する場合、私はクローンを割り当てるしようとしています/ IDが一致するか末尾に追加の配列を持つオブジェクト、マージ:この場合マージ配列IDが一致するか、最後

newState = Object.assign({}, state, { 
    data: { 
     newest: { 
     result: action.payload.result, 
     list: action.payload.items, 
     request: action.payload.items 
     }, 
     itemList: [ 
     ...state.data.itemList, 
     { 
      id: action.payload.id, 
      list: action.payload.items, 
      request: action.payload.items 
     } 
     ] 
    } 
    }); 

...state.data.itemListですIDで既存のオブジェクトを探し、マージリスト+ネストされたオブジェクトを要求するオブジェクトを持つ配列。しかし、そのオブジェクトがない場合は、IDをリストに追加します。

現在のアプローチでは、常に最後に追加されますが、もちろんこれは私が望むものではありません。

ありがとうございました。

答えて

0

一度の操作で新しい状態を作るように圧力を感じることはありません。ここに私の実装があります。私はArray#someを使用して現在のIDの配列をチェックします。 ES6の楽しいトリックもあります。

const newState = {...state} 
const {result, items, id, items} = action.payload 
const data = {newest: {result, list: items, request: items}} 
const hasId = newState.data.itemList.some(item => item.id === id) 
if (!hasId) { 
    newState.data.itemList.push({id, list: items, request: items}) 
} 
return {...newState, data} 
関連する問題