getIn()在Immutable.js中做了什么?

时间:2017-04-20 09:37:08

标签: javascript immutable.js

不幸的是,文档非常稀疏:

https://facebook.github.io/immutable-js/docs/#/Map/getIn

有没有人有例子?我猜测如果我有像这样的myObject:

  a: {
    b:{
      c:"banana"
    }
  }

  

myObject.getIn([“a”,“b”,“c”])

将返回香蕉。

然而,不可变对象也可以是映射对象,这让我彻底迷茫。

1 个答案:

答案 0 :(得分:21)

很短

${__counter(FALSE,)}map.getIn(["a", "b", "c"])

的快捷方式

详细信息:

你可能已经进入了map.get("a").get("b").get("c")个陷阱之一。致电:

fromJS

仅使用键const map = Immutable.fromJS({a: {b: {c: "banana"}}}); 创建Map,其值也是a,只有键Map,其值也是b,只有Mapc和值banana

使用其他字词fromJS进入所提供对象的深处,并为每个Map定义Object,为每个List定义Array

通过此示例,调用map.getIn(["a", "b", "c"])map.get("a").get("b").get("c")

的快捷方式

但是,如果您将map定义为Map

const map = new Immutable.Map({a: {b: {c: "banana"}}});

它创建了一个Map,只有键a,其值是普通对象{b: {c: "banana"}},而调用map.get("a").get("b").get("c")会引发类似get is not a function的内容,因为map.get("a") 1}}将返回{b: ...}普通对象。

同样的原因是map.getIn(["a", "b", "c"])无法正常工作的原因。