我有以下对象:
const initialState = Map({
posts: {
most_popular: [],
trending: [],
latest: [],
}
});
我正在尝试更新条目中的子对象。这是我尝试过的:
intialState.setIn(["posts", "most_popular"], ["array", "of", "values"]);
运行此set命令将返回
Uncaught Error: Invalid keyPath()
我错过了什么吗?我不需要创建子地图吗? E.g
const initialState = Map({
posts: Map({
most_popular: [],
显然这不起作用(我试过),但也许有另一种设置子对象的方法?
编辑:
获取对象并进行更新如此有效:
state.get("entries").most_popular = ["k"];
但这意味着我的条目.most_popular(趋势,最新)不是不可变的?有没有办法让子对象不可变?
答案 0 :(得分:1)
不使用Map()
,而是使用fromJS()
。如果使用Map()
,则键{{1}}下的数组是标准JS对象,而不是Immutable.js结构。
因此:
most_popular
现在一切都是不可变的对象。然后你可以很容易地做到:
const initialState = fromJS({
posts: {
most_popular: [],
trending: [],
latest: [],
}
});