我已经在一些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 。