不可变JS:设置地图内的地图值

时间:2016-05-06 06:39:31

标签: immutable.js

我有像这样的永恒

Immutable.Map({
    name: action.data.name,
    avatarUrl: action.data.up,
    profileUrl: action.data.upl,
    id: action.data.uid,
    role: Immutable.fromJS(action.data.r),
    color: Immutable.Map({
      initial: '#00FF00',
    })
});

我想要的是检查color map内是否存在与某个键对应的值,然后进行更改。如果它不存在,则在color map内添加一个新密钥,其新值如下:

Immutable.Map({
    name: action.data.name,
    avatarUrl: action.data.up,
    profileUrl: action.data.upl,
    id: action.data.uid,
    role: Immutable.fromJS(action.data.r),
    color: Immutable.Map({
      initial: '#00FF00',
      c-0: '#000000',
      7: '#0000FF'
    })
});

我尝试的是这个,但它不起作用,并在任何地方添加密钥。

return state.setIn(state.getIn('color', action.thread_id), action.code);

thread_id就像' c-0'或者' 7'和代码包含要根据键添加或更新的值

更新1 添加像' c-0'和' c-1',' 7'和' 8',它在地图内添加了

Immutable.Map({
    name: action.data.name,
    avatarUrl: action.data.up,
    profileUrl: action.data.upl,
    id: action.data.uid,
    role: Immutable.fromJS(action.data.r),
    c: Immutable.Map({
      -: Immutable.Map({
        0: '#00F0F0',
        1: '#0000F0',
      })
    })
    7: '#FFFF00',
    8: '#00FFFF',
    color: Immutable.Map({
      initial: '#00FF00'
    })
});

1 个答案:

答案 0 :(得分:0)

这对我有用:Include