我已经在一些react-redux代码中看到了setInt()和set()的用法:

state.setIn(...);
state.set(...);

我在这里找到了一些文档https://facebook.github.io/immutable-js/
但不幸的是,该方法没有详细记录。

我还发现了其他一些问题:Using React's immutable helper with Immutable.js
但是这些并不能回答我的问题。

我了解,它必须做一些不变的事情吗?
但是这里不变的是什么?
set()和setIn()有什么区别?
为什么我们需要不变的?

最佳答案

不可变的set方法仅设置立即属性,即对象的直接子代。 setIn让您设置数据中任何深度节点的值。 set仅采用属性名称。 setIn使用键/索引数组来深入嵌套的元素。

var basket = Immutable.Map({"milk":"yes", "flour":"no"});

basket = basket.set("flour", "yes");

basket = Immutable.Map({"fruits":{"oranges":"no"}, "flour":"no"});

basket = basket.setIn(["fruits", "oranges"], "yes");

当更新商店中的状态时,getIn / setIn方法非常有用,因为您可以使用通用操作并提供子组件的关键路径。他们可以调用将路径作为参数传递的 Action 。

10-06 15:44