更改字典中所有对象的属性,而不改变状态

时间:2017-08-14 22:33:50

标签: reactjs redux react-redux

简短..我试图在字典的所有对象中编辑属性(选中)..但无论我做什么,我都会改变状态。有人可以向我解释如何做到以及为什么我的工作无效?

我有这个状态:

{
  pageDict = {
    someId1: { prop1: prop1value, prop2: prop2value}, etc
    someId2: { prop1: prop1value, prop2: prop2value}, etc
  },
  playlistIndex: 0,
  playlists: [ somePlaylistId1, somePlaylistId2, etc ],
  playlistDict: {
    somePlaylistId1: { prop1: prop1Value, pages: [ someId1, someId2 ], etc }
    somePlaylistId2: { prop1: prop1Value, pages: [ someId1, someId2 ], etc }
  }

}

我有这个减速器功能:

case types.SET_SINGLE_PAGE_SELECT: {
  let pageDictCopy = Object.assign( {}, state.pageDict );
  let activePlaylistId = state.playlists[ state.playlistIndex];
  let activePlaylist = state.playlistDict[ activePlaylistId ];

  for ( let pageId of activePlaylist.pages ) {
    let page = pageDictCopy[ pageId ];
    page.selected = ( pageId == action.pageId );
  }

  return Object.assign({}, state, {
    pageDict: pageDictCopy
  });
}

编辑:我也有不变的助手

0 个答案:

没有答案