在Redux中向键字添加键/值

use*_*352 1 javascript reactjs redux react-redux

我正在学习Redux,并且无法弄清楚如何在字典中添加密钥对:

//Page Dictionary    
{
  randomId1: { aPageObj },
  randomId2: { aPageObj }, etc
}
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但这不起作用

//action
export function addPage( pageId, pageObj ) {
  return { type: types.ADD_PAGE, pageId, pageObj };
}

//reducer
case types.ADD_PAGE: {
  return Object.assign({}, state, {
    pages: {
      ...state.pages, action.pageId: action.pageObj
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?还在试图弄清楚如何不改变状态..

mad*_*ox2 6

您需要使用对象文字的计算属性名称(带[]):

pages: {
  ...state.pages, [action.pageId]: action.pageObj
}
Run Code Online (Sandbox Code Playgroud)

此外,如果您可以使用对象spreas语法,则可以省略Object.assign,例如:

return {
  ...state,
  pages: {
    ...state.pages, [action.pageId]: action.pageObj
  }
}
Run Code Online (Sandbox Code Playgroud)