我正在这样设置地图:
import { Map } from 'immutable';
const initialState = {
a: "test",
b: {
inside: "inside value"
}
}
const otherState = {
c: "other value"
}
const myState = new Map({ app: new Map(initialState).merge(otherState) });
这似乎是可行的,但是当我尝试更改嵌套对象内的值时,它似乎对我却不起作用(我得到了“无效的键路径”)。所以尝试:
myState.setIn(['app', 'b', 'inside'], 'newValue');
给我一个“无效的密钥路径”错误。看起来当我注销时,嵌套对象没有变成不可变的。不确定我做错了什么。
编辑-这是一个显示问题的代码笔-https://codepen.io/ajmajma/pen/rRQoZp
答案 0 :(得分:1)
显然,鉴于['app', 'b', 'inside']
是app
对象的唯一属性,正确的路径应该是myState
。
您还需要Immutable.fromJS()
和initialState
和otherState
对象,否则嵌套键将被视为JS对象,而不是immutablejs映射。
const myState = new Map({ app: new Map(Immutable.fromJS(initialState)).merge(Immutable.fromJS(otherState)) });