我在一些react-redux代码中看到了setIn()和set()的使用:
state.setIn(...);
state.set(...);我在这里找到了一些文档,https://facebook.github.io/immutable-js/,但不幸的是,该方法没有详细的文档。
我还发现了一些其他问题:Using React's immutable helper with Immutable.js,但这些都没有回答我的问题。
我明白,它必须做一些不变的事情?但是这里不变的东西是什么呢?那么set()和setIn()有什么区别呢?为什么我们需要不可变的?
发布于 2015-12-23 21:34:45
不可变的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方法非常有用,因为您可以使用通用操作并提供到子组件的关键路径。它们可以调用将路径作为参数传递的操作。
发布于 2017-05-08 22:04:23
set和setIn是用于在列表或地图对象中设置数据的immutablejs方法之一。要理解这一点的简单示例是,假设您有一个this
//注意,fromJS是另一个来自immutablejs库的方法
const iniState = fromJS({
name:null,
friends:fromJS({
name:null
}),
})在这种情况下,您需要使用最新状态更新初始状态,然后可以使用set和setIn方法。
iniState.set('name',"sibusiso Massango").setIn(['friends','name'],"Zweli Mathebula");
这就是如何使用set和setIn方法,要查找有关此方法的更多信息,请阅读此文档的https://facebook.github.io/immutable-js/docs/
https://stackoverflow.com/questions/34434354
复制相似问题