Подтвердить что ты не робот

Immutable.js Вставить массив в вложенный объект

Предположим, что есть объект:

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

Мне нужно нажать 4 в массив object.foo.bar.

Сейчас я делаю так:

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

Но мне это не очень нравится, так как мне нужно использовать object.foo.bar.length в пути. В моем реальном примере объект вложен гораздо глубже, а длина массива выглядит очень уродливо. Есть ли другой, более удобный способ?

4b9b3361

Ответ 2

Я использую seamless-immutable, когда добавляю новый элемент в массив вложенного объекта, я получил эту ошибку:

Метод push не может быть вызван в неизменяемой структуре данных.

У моего массива все еще есть метод push, но он не работает. Вместо этого используется решение concat, более подробная информация о # 43:

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

Надеюсь на эту помощь!