不可变setIn嵌套对象返回无效的keyPath错误

Immutable setIn nested object returning invalid keyPath error

本文关键字:keyPath 错误 无效 返回 setIn 嵌套 对象 不可变      更新时间:2023-09-26

我有以下对象:

const initialState = Map({
  posts: {
    most_popular: [],
    trending: [],
    latest: [],
  }
});

我正在尝试更新条目中的子对象。以下是我尝试过的:

intialState.setIn(["posts", "most_popular"], ["array", "of", "values"]);

执行此set命令将返回

Uncaught Error: Invalid keyPath()

我错过了什么吗?我不需要创建子映射,对吧?如

const initialState = Map({
      posts: Map({
        most_popular: [],

显然这不起作用(我已经尝试过),但也许有另一种方法来设置子对象?

编辑:

获取对象,并像这样更新:

state.get("entries").most_popular = ["k"];

但这意味着我的条目。最流行(趋势,最新)不是不可变的吗?有没有办法使子对象不可变?

fromJS()代替Map()。如果你使用Map(),那么你的键most_popular下的数组是一个标准的JS对象,而不是一个不可变的JS结构。

:

const initialState = fromJS({
  posts: {
    most_popular: [],
    trending: [],
    latest: [],
  }
});

现在一切都是不可变对象。然后,您可以轻松地执行:

initialState.setIn(["posts", "most_popular"], ["array", "of", "values"]);