2016-07-27 22 views
8

Załóżmy, że jest to przedmiot:Immutable.js push do tablicy w zagnieżdżonego obiektu

const object = { 
    'foo': { 
    'bar': [1, 2, 3] 
    } 
} 

muszę pchnąć 4 do object.foo.bar tablicy.

Teraz robię to tak:

const initialState = Immutable.fromJS(object) 
const newState = initialState.setIn(
    ['foo', 'bar', object.foo.bar.length], 
    4 
) 
console.log(newState.toJS()) 

Ale ja naprawdę nie podoba, ponieważ trzeba użyć object.foo.bar.length w ścieżce. W moim rzeczywistym przykładzie obiekt jest zagnieżdżony znacznie głębiej, a uzyskanie długości tablicy wygląda bardzo brzydko. Czy jest inny, wygodniejszy sposób?

Odpowiedz

2

Używam seamless-immutable, kiedy jestem dodanie nowego elementu do tablicy zagnieżdżonego obiektu, I Mam ten błąd:

The push method cannot be invoked on an Immutable data structure.

Moja tablica nadal ma metodę push, ale nie działa. Rozwiązaniem jest użyć concat zamiast, więcej szczegółów na temat #43:

initialState.updateIn(['foo', 'bar'], arr => arr.concat([4])); 

Nadzieja to pomaga!

+0

Ten sam numer tutaj ma sens, ponieważ push modyfikuje, co nie jest możliwe w przypadku niezmiennych struktur danych. – Lucas

Powiązane problemy