如何在reducer中处理Map类型

时间:2017-02-01 23:08:37

标签: angular typescript ngrx

使用ng2打字稿项目。 这应该是直截了当的。我需要在商店中放一个Map<string, Relationship>,但由于某种原因它不起作用: 我做了以下调试:

case relationActions.ActionTypes.SET_RELATIONSHIPS: {
  console.log('reducer');
  console.log(action.payload);
  return Object.assign({}, state, {
    relationShips: action.payload
  });
}

日志显示我期待的Map,但redux dev工具显示:

relationShips(pin): null => {}

是因为Object.assign()无法处理Map吗? 解决方案是什么?

1 个答案:

答案 0 :(得分:0)

Pure Javascript Map是可变的,你不应该将它用作reducer的状态。

如果你真的想使用地图结构,你应该看看Immutable.js( - &gt; Map)。

如果您不想使用Immutable.js,您应该有类似的状态来模拟地图的内容:

{
  [`yourId1`]: 'value 1',
  [`yourId2`]: 'value 2',
  // ...
}

并使用Object.assign进行操作。