2017-04-20 67 views

回答

5

不久

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"])不能像你所期望的那樣工作。