2017-04-20 2 views
3

は、残念ながら、ドキュメントが非常に希薄である:Immutable.jsでgetIn()は何をしますか?

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

は誰でも例がありますか?

myObject.getIn([ "A"、 "B"、 "C"])

こと

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

:私はそうのようなmyObjectというを持っている場合があることを推測しています

はバナナを返します。

しかし、不変オブジェクトは地図オブジェクトでもあり、私は完全に混乱してしまいます。

答えて

5

まもなく

map.getIn(["a", "b", "c"])を詳細にmap.get("a").get("b").get("c")

へのショートカットです:

おそらくfromJSトラップの一つになっています。呼び出し:

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

は値の唯一のキーa、とMapを作成することも、唯一の鍵cと値bananaMapある値です、また、唯一のキーbMapです。すなわちfromJS

提供物体の深部に入り、この例では、各Objectと各Array

ためListためMapを定義し、map.getIn(["a", "b", "c"])を呼び出すとmap.get("a").get("b").get("c")

へのショートカットの一種でありますしかし、mapMapと定義した場合:

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

キーをaというキーで作成します。その値は普通のオブジェクト{b: {c: "banana"}}です。get is not a functionのようなものを投げてmap.get("a").get("b").get("c")を呼び出します。map.get("a")は平文オブジェクト{b: ...}を返します。

同じ理由で、map.getIn(["a", "b", "c"])は期待通りに機能しません。

関連する問題