不可变的 JS:在地图中设置地图的值

Immutable JS: Set value of map inside 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',
    })
});

我只想检查 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'
    })
});

这对我有用:return state.setIn(['color', action.thread_id], action.code);