react-redux:state.setIn() 和 state.set() 有什么区别?
react-redux: What is the difference between state.setIn() and state.set()?
我在一些 react-redux 代码中看到了 setIn()
和 set()
的使用:
state.setIn(...);
state.set(...);
我在这里找到了一些文档 https://facebook.github.io/immutable-js/
但不幸的是,该方法没有详细记录。
我还发现了一些其他问题:Using React's immutable helper with Immutable.js
但是这些并没有回答我的问题。
我明白了,它必须做一些不可变的事情吗?
但是这里不可变的东西是什么?
set()
和 setIn()
有什么区别?
为什么我们需要不可变?
不可变set
方法只设置直接属性,即对象的直接子对象。 A setIn
允许您设置数据中任何深层节点的值。 set
只取 属性 名字。 setIn
采用 keys/index 的数组向下到达深层嵌套的元素。
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
方法在更新商店中的状态时非常有用,因为您可以使用通用操作并提供子组件的关键路径。他们可以调用将路径作为参数传递的操作。
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/
我在一些 react-redux 代码中看到了 setIn()
和 set()
的使用:
state.setIn(...);
state.set(...);
我在这里找到了一些文档 https://facebook.github.io/immutable-js/ 但不幸的是,该方法没有详细记录。
我还发现了一些其他问题:Using React's immutable helper with Immutable.js 但是这些并没有回答我的问题。
我明白了,它必须做一些不可变的事情吗?
但是这里不可变的东西是什么?
set()
和 setIn()
有什么区别?
为什么我们需要不可变?
不可变set
方法只设置直接属性,即对象的直接子对象。 A setIn
允许您设置数据中任何深层节点的值。 set
只取 属性 名字。 setIn
采用 keys/index 的数组向下到达深层嵌套的元素。
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
方法在更新商店中的状态时非常有用,因为您可以使用通用操作并提供子组件的关键路径。他们可以调用将路径作为参数传递的操作。
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/