Нужно ли помещать в стор все состояния компонента?

Друзья,

Какие состояния нужно отражать в сторе?

Допустим есть компонент, который выгружает список постов и отрисовывает их в виде списка. Можно хранить только список постов, а можно пойти дальше, и все состояния UI (состояние загрузки, начало загрузки, прогресс загрузки, и так далее) тоже передавать в стор, для полного понимания что происходит. Многие доки именно это и описывают, и еще и передают ошибки в стор.

Какие данные вы обычно храните в сторе, если данные грузятся асинхронно, и могут быть различные ошибки?
Что храните локально, а что в сторе?

Может быть я что-то не понимаю, потому что у меня в голове стор это хранилище данных, а в доках в него передают в том числе и временные значения.
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 3
Robur
@Robur
Знаю больше чем это необходимо
Все состояния не нужно.

Состояния компонента кладете в стейт компонента, состояния данных - в стор.
Скорее всего источник вашего смущения в том что вы думаете что состояния загрузки данных - это состояние компонента, а это не так, это как раз относится к данным - данных нет, данные загружаются, данные загружены, данные загружены с ошибкой - это все не про UI. То что они "временные"ничего не значит. Информация о том что в происходит загрузка данных - это тоже данные.
Это может вообще не показываться в UI или же показываться сразу во многих компонентах - не важно.

UI просто может отображать эти состояния каким-то образом, так же как он отображает данные когда они в сторе появляются.
Ответ написан
Стор предназначен для хранения состояния приложения. В это состояние входят как данные, так и различные системные необходимости, например, текущий роут (если мы связываем роутинг с Redux) или сессия пользователя. Индикатор загрузки сюда тоже класть. При этом глобальный индикатор будет показывать лоадер, к примеру, оверлеем над всем приложением.

А вот в случаях, когда нужно положить в стор что-то локальное, например, при сабмите формы нужно переключить ее состояние; тогда пользуйтесь стейтом компонента. В случаях, когда один и тот же стейт требуют несколько компонентов (но не все приложение), можно извращаться по-разному. Мы в проекте на flux просто делали приватные сторы, которые шарились между соседними компонентами, и избегали расшаривания стейта между не соседствующими компонентами. Когда стор один, как в redux, можно использовать HOC, наследование или написать собственный хук.
Ответ написан
Ваш ответ на вопрос

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

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