Неизменный js UpdateIn хранит номер вместо объекта - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь обновить объект immutablejs;

//action.vals = {element: "p", type: "text", content: "test", className: "paragraph-topic"}
return state
    .updateIn(['contents'], list => list.push(action.vals))         //<<<<<THis is failing
    .set('loading', false)
    .set('error', false)
  break;`

Но вместо этого он хранит 10 целое число.

Я действительно сбит с толку, и мне нужна подсказка.

Вот мой полный код

Любая помощь очень ценится!Я схожу с ума из-за отсутствия надлежащей документации использования

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Я заметил, что на редукторе LOAD_DATA вы устанавливаете contents, чтобы он становился массивом, а не неизменяемым списком:

case LOAD_DATA:
  return state
    .set('loading', true)
    .set('error', false)
    .setIn(['contents'], [])

Это может вызвать немало проблем.Происходит то, что вы используете в своем обновлении функцию vanilla JS push, которая возвращает length массива.Итак, я предполагаю, что contents имеет 10 элементов?

Вам просто нужно изменить редуктор LOAD_DATA, чтобы вместо этого иметь:

.setIn(['contents'], fromJS([]))

или

.setIn(['contents'], new List())

Если используется List(), это также должно быть явно импортировано!

0 голосов
/ 29 сентября 2018

Сделайте что-нибудь подобное, используя ....

.updateIn(['contents'], list => [...list, action.vals])
...