web-dev-qa-db-fra.com

Comment puis-je définir une valeur profondément imbriquée dans Immutable.js?

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?

43
Matt Zeunert

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");
64
Matt Zeunert