@Lite_robot

React.js: В чем разница между State с типом Object и State с типом Array?

Привет, изучаю React.js и встретился с затрудниями в выводе данных из state: при обновлении state с типом Object, изменения не отбражаются во view. Но если обновлять state с типом Array, то обновленные данные отображаются во view.

код state с типом Object:
pastebin.com/sDJJhTrS

код state с типом Array:
pastebin.com/bMyFMc6w

В обоих случаях данные в state присутсвуют. Подскажите в чем разница и как исправить код, чтобы state с типом Object обновлял view?
  • Вопрос задан
  • 362 просмотра
Решения вопроса 2
@Aves
Нужно Object.assign({}, state, {messages:action._data, loading:false})
Ответ написан
Комментировать
let newState = Object.assign(state, {messages:action._data, loading:false});


В вашем случае вы мутируете объект state. А реакт (и экосистема) построена в функциональных парадигамах, одна из которых - иммутабельность. Т.е. мы берем предыдущий state, новый state и просто сравниваем их по ссылке:

newState === state // true в вашем случае

В вашем случае - state мутировал, но это все еще одна и та же ссылка и реакт\редакс думает, что никаких изменений не было. Как правильно вам уже подсказал Aves
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы