首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >react-redux: state.setIn()和state.set()有什么区别?

react-redux: state.setIn()和state.set()有什么区别?
EN

Stack Overflow用户
提问于 2015-12-23 19:10:33
回答 2查看 23.1K关注 0票数 19

我在一些react-redux代码中看到了setIn()set()的使用:

代码语言:javascript
运行
复制
state.setIn(...);
state.set(...);

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

我还发现了一些其他问题:Using React's immutable helper with Immutable.js,但这些都没有回答我的问题。

我明白,它必须做一些不变的事情?但是这里不变的东西是什么呢?那么set()setIn()有什么区别呢?为什么我们需要不可变的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-23 21:34:45

不可变的set方法只设置直接属性,即对象的直接子对象。setIn让您可以设置数据中任何深层节点的值。set只接受属性名称。setIn使用一个键/索引数组来访问深度嵌套的元素。

代码语言:javascript
运行
复制
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方法非常有用,因为您可以使用通用操作并提供到子组件的关键路径。它们可以调用将路径作为参数传递的操作。

票数 35
EN

Stack Overflow用户

发布于 2017-05-08 22:04:23

setsetIn是用于在列表或地图对象中设置数据的immutablejs方法之一。要理解这一点的简单示例是,假设您有一个this

//注意,fromJS是另一个来自immutablejs库的方法

代码语言:javascript
运行
复制
const iniState = fromJS({
    name:null,
    friends:fromJS({
       name:null
    }),
})

在这种情况下,您需要使用最新状态更新初始状态,然后可以使用set和setIn方法。

iniState.set('name',"sibusiso Massango").setIn(['friends','name'],"Zweli Mathebula");

这就是如何使用setsetIn方法,要查找有关此方法的更多信息,请阅读此文档的https://facebook.github.io/immutable-js/docs/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34434354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档