2017-11-02 16 views
2

私は以下の状態とレデューサーを持っていますが、新しい配列オブジェクトをプッシュしていません。Reactネイティブreduxレデューサーは、配列をプッシュする最良の方法

const initialState = { 
    photos: [], 
    selectedPhoto:{}, 
    photosTeamId:'', 
    photosProjectId:'' 
}; 

case actionTypes.PHOTOS_UPDATE: 
      return Object.assign({}, state, { 
       photos:action.data.photos, 
       photosTeamId:action.data.photosTeamId, 
       photosProjectId:action.data.photosProjectId 
      }) 

写真を押したが、[...]ここで広がりオペレータがあります

+0

このhttps://stackoverflow.com/questions/43376849/useを参照してください。 -object-assign-or-spread-operator-in-react-redux-of-a-better-practice/43376980#43376980とこのhttps ://stackoverflow.com/questions/41949387/how-to-use-immutability-helper-to-update-a-nested-object-within-an-array/41949486#41949486スプレッド演算子の構文かImmutability-helperパッケージ –

答えて

2

はここjavascript spread syntaxを使用して、よりきれいな方法です:

const initialState = { 
    photos: [], 
    selectedPhoto:{}, 
    photosTeamId:'', 
    photosProjectId:'' 
}; 

case actionTypes.PHOTOS_UPDATE: 
      return { 
       ...state, 
       photos: [...state.photos, ...actions.data.photos], 
       photosTeamId: action.data.photosTeamId, 
       photosProjectId: action.data.photosProjectId 
      } 
0
case actionTypes.PHOTOS_UPDATE: 
    return { 
    ...state, 
    photos: state.photos.concat(action.data.photos), 
    photosTeamId: action.data.photosTeamId, 
    photosProjectId: action.data.photosProjectId 
    }; 
0

を上書きなっていません。スプレッド演算子を使用すると、元の配列を保持しながら、既存の配列を取得し、別の要素を追加することができます。

例:

case actionTypes.PHOTOS_UPDATE: 
 
    return [ 
 
    ...state, 
 
    Object.assign({}, { 
 
     photos:action.data.photos, 
 
     photosTeamId:action.data.photosTeamId, 
 
     photosProjectId:action.data.photosProjectId 
 
    }) 
 
    ];

関連する問題