36
Podczas pracy z czystym JavaScripcie obiekty można łatwo zmienić głęboko zagnieżdżony właściwości obiektu:Jak ustawić głęboko zagnieżdżoną wartość w pliku Immutable.js?
people.Thomas.nickname = "Mr. T";
Ale z Niezmienne muszę przejść przez przodków każdej nieruchomości przed mam nowy ludzie obiektu:
var thomas = peopleImmutable.get("Thomas");
var newThomas = thomas.set("nickname", "Mr .T");
peopleImmutable = peopleImmutable.set("Thomas", newThomas);
Czy istnieje bardziej elegancki sposób na napisanie tego?
Jak można przełączać wartość logiczną używając setIn? Na przykład: peopleImmutable = peopleImmutable.setIn (["Thomas", hasNickName], toggleBooleanHere); –
@ zero_cool: Przypuszczam, że peopleImmutable = peopleImmutable.setIn (["Thomas", "hasNickName"],! PeopleImmutable.getIn (["Thomas", "hasNickName"])); '(untested) –
@VincentSels To działało idealnie! A co ze zmianą wszystkich boolów w głęboko zagnieżdżonym niezmiennym obiekcie z false na true w jednym bloku? Na przykład: options = fromJS ({one: {selected: false}, two: {selected: false}}). Jestem w React i próbuję iterować przez obiekt i użyć setIn, ale stan zostaje ustawiony tylko dla ostatniego zestawu kluczy. –