what does getIn() do in Immutable.js?

后端 未结 1 480
礼貌的吻别
礼貌的吻别 2021-02-18 23:13

Unfortunately the documentation is very sparse :

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

Does anyone have an example? I am guessing tha

1条回答
  •  北恋
    北恋 (楼主)
    2021-02-19 00:03

    Shortly:

    map.getIn(["a", "b", "c"]) is a shortcut to map.get("a").get("b").get("c")

    In details:

    You have probably got into one of the fromJS traps. Calling :

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

    creates a Map with only key a, which's value is also a Map with only key b, which's value is also a Map with only key c and value banana.

    With other words fromJS goes into the deep of the object provided, and defines Map for each Object and a List for each Array

    With this example, calling map.getIn(["a", "b", "c"]) is kind of a shortcut to map.get("a").get("b").get("c")

    But if you define map as a Map:

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

    it creates a Map, with only key a, which's value is plain object {b: {c: "banana"}}, and calling a map.get("a").get("b").get("c") will throw you something like get is not a function, since map.get("a") will return {b: ...} plain object.

    Same reasons are why map.getIn(["a", "b", "c"]) will not work as you might expect.

    0 讨论(0)
提交回复
热议问题