Malheureusement, la documentation est très clairsemée:
https://facebook.github.io/immutable-js/docs/#/Map/getIn
Quelqu'un at-il un exemple? Je devine que si j'ai un myObject comme ça:
a: {
b:{
c:"banana"
}
}
cette
myObject.getIn (["a", "b", "c"])
retournera la banane.
Cependant, les objets immuables peuvent également être des objets cartographiques, ce qui me laisse complètement confus.
brièvement:
map.getIn(["a", "b", "c"])
est un raccourci vers map.get("a").get("b").get("c")
En détails:
Vous êtes probablement entré dans l'un des pièges fromJS
. Appel:
const map = Immutable.fromJS({a: {b: {c: "banana"}}});
crée un Map
avec uniquement la clé a
, dont la valeur est également un Map
avec uniquement la clé b
, dont la valeur est également un Map
avec uniquement la clé c
et la valeur banana
.
Avec d'autres mots fromJS
va dans le fond de l'objet fourni et définit Map
pour chaque Object
et un List
pour chaque Array
Avec cet exemple, appeler map.getIn(["a", "b", "c"])
est une sorte de raccourci vers map.get("a").get("b").get("c")
Mais si vous définissez map
comme Map
:
const map = new Immutable.Map({a: {b: {c: "banana"}}});
il crée une carte, avec seulement la clé a
, dont la valeur est un objet simple {b: {c: "banana"}}
, et appeler une map.get("a").get("b").get("c")
vous donnera quelque chose comme get is not a function
, puisque map.get("a")
renverra {b: ...}
objet simple.
Les mêmes raisons expliquent pourquoi map.getIn(["a", "b", "c"])
ne fonctionnera pas comme vous pouvez vous y attendre.