Lorsque vous travaillez avec des objets JavaScript simples, il est facile de modifier une propriété d'objet profondément imbriquée:
people.Thomas.nickname = "Mr. T";
Mais avec Immutable, je dois parcourir les ancêtres de chaque propriété avant d'avoir un nouvel objet people:
var thomas = peopleImmutable.get("Thomas");
var newThomas = thomas.set("nickname", "Mr .T");
peopleImmutable = peopleImmutable.set("Thomas", newThomas);
Existe-t-il une manière plus élégante d'écrire cela?
Les cartes dans Immutable ont un méthode setIn qui facilite la définition de valeurs profondes:
peopleImmutable = peopleImmutable.setIn(["Thomas", "nickname"], "Mr. T");
Ou, en utilisant split
pour générer le tableau:
peopleImmutable = peopleImmutable.setIn("Thomas.nickname".split("."), "Mr. T");