Задать вопрос
@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?
  • Вопрос задан
  • 363 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы