首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ImmutableJS中,如何将新数组推送到映射中?

在ImmutableJS中,如何将新数组推送到映射中?
EN

Stack Overflow用户
提问于 2015-07-27 17:01:11
回答 2查看 16.6K关注 0票数 16

如何使用ImmutableJS实现以下功能:

myMap.get(key).push(newData);

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-11 11:03:22

您可以执行以下操作:(请参阅此JSBin)

代码语言:javascript
复制
const myMap = Immutable.fromJS({
  nested: {
    someKey: ['hello', 'world'],
  },
});

const myNewMap = myMap.updateIn(['nested', 'someKey'], arr => arr.push('bye'));

console.log(myNewMap.toJS());
// {
//  nested: {
//    someKey: ["hello", "world", "bye"]
//  }
// }

由于myMap是不可变的,每当您尝试设置/更新/删除其中的某些数据时,它都会返回对新数据的引用。因此,您必须将其设置为一个变量才能访问它(在本例中为myNewMap)。

票数 36
EN

Stack Overflow用户

发布于 2015-07-30 01:39:10

如果在key处引用的数组是一个普通的newData数组-那么你实际上需要改变这个值-这样你的代码就会像预期的那样工作(ie - javascript将在'key‘处包含一个可变/变异的数组,并将javascript推入)。然而,这种做法违背了不可变性的目的,所以我建议myMap中的键引用一个Immutable.List。在这种情况下,您需要执行以下操作:

代码语言:javascript
复制
var newMap = myMap.set('key', myMap.get('key').push(newData))
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31648907

复制
相关文章

相似问题

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