Как установить глубокое вложенное значение в Immutable.js?
При работе с объектами простого JavaScript легко изменить свойство глубоко вложенного объекта:
people.Thomas.nickname = "Mr. T";
Но с неизменяемым я должен пройти через каждого предка имущества, прежде чем у меня появится новый объект:
var thomas = peopleImmutable.get("Thomas");
var newThomas = thomas.set("nickname", "Mr .T");
peopleImmutable = peopleImmutable.set("Thomas", newThomas);
Есть ли более элегантный способ написать это?
Ответы
Ответ 1
Карты в Immutable имеют метод setIn, который позволяет легко устанавливать глубокие значения:
peopleImmutable = peopleImmutable.setIn(["Thomas", "nickname"], "Mr. T");
Или, используя split
для генерации массива:
peopleImmutable = peopleImmutable.setIn("Thomas.nickname".split("."), "Mr. T");