残念ながら、ドキュメントは非常にまばらです:
https://facebook.github.io/immutable-js/docs/#/Map/getIn
誰か例がありますか?私はguessingmyObjectがある場合:
a: {
b:{
c:"banana"
}
}
それ
myObject.getIn(["a"、 "b"、 "c"])
バナナを返します。
ただし、不変オブジェクトはマップオブジェクトでもあるため、完全に混乱しています。
短期間:
map.getIn(["a", "b", "c"])
はmap.get("a").get("b").get("c")
へのショートカットです
詳細:
おそらくfromJS
トラップの1つに陥ったのでしょう。電話:
_const map = Immutable.fromJS({a: {b: {c: "banana"}}});
_
キーMap
のみを持つa
を作成します。この値は、キーMap
のみを持つb
であり、値は、キーMap
と値c
のみを持つ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"}}});
_
それはキーa
のみを持つMapを作成します。この値はプレーンオブジェクト_{b: {c: "banana"}}
_であり、map.get("a").get("b").get("c")
を呼び出すと、map.get("a")
のような_get is not a function
_のようなものがスローされます。 _{b: ...}
_プレーンオブジェクトを返します。
同じ理由が、map.getIn(["a", "b", "c"])
が期待どおりに機能しない理由です。