我在一些react-redux代码中看到过使用setInt()和set():
state.setIn(...);
state.set(...);
我在这里找到了一些文档https://facebook.github.io/immutable-js/ 但不幸的是,该方法没有详细记录。
我还发现了一些其他问题:Using React's immutable helper with Immutable.js 但这些都没有回答我的问题。
我明白,它必须做一些不可改变的事情? 但这里有什么不可改变的东西? set()和setIn()之间有什么区别? 为什么我们需要不可变的?
答案 0 :(得分:27)
不可变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
方法非常有用,因为您可以使用通用操作并提供子组件的关键路径。他们可以调用将路径作为参数传递的动作。