【问题标题】:Immutable JS: Set value of map inside map不可变 JS:在地图内设置地图的值
【发布时间】:2016-05-06 06:39:31
【问题描述】:

我有这样的不可变

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'
    })
});

【问题讨论】:

  • 使用state.getIn(['color', 'initial']),我无法访问键初始值。任何帮助将不胜感激

标签: immutable.js


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2021-05-24
    • 1970-01-01
    相关资源
    最近更新 更多