不久:
map.getIn(["a", "b", "c"])
是一個捷徑map.get("a").get("b").get("c")
在細節:
你可能已經鑽進了fromJS
陷阱之一。呼喚:
const map = Immutable.fromJS({a: {b: {c: "banana"}}});
只有關鍵a
,它的價值產生了Map
也是Map
只有關鍵b
,它的價值也是Map
只有關鍵c
和值banana
。
隨着換句話說fromJS
進入所提供的對象的深,併爲每個Object
和每個Array
在該示例的一個List
定義Map
,主叫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")
將返回{b: ...}
純文本對象。
同樣的原因是爲什麼map.getIn(["a", "b", "c"])
不能像你所期望的那樣工作。