Как структурировать избыточное хранилище для ответа сервера

Этот вопрос может рассматриваться как "основанный на мнении", но я просто ищу вдохновение здесь, так что вот оно:

В моем приложении я запрашиваю данные с сервера. Эти данные не являются списком или чем-то еще, в основном это просто набор пар ключ-значение, которые затем должны отображаться пользователю. Подобный используемый случай описан здесь. Должен ли я сохранять результаты поиска в магазине приставок?

Теперь возникает вопрос: как мне хранить эти данные в онлайн-магазине. У него есть собственный редуктор? Или я храню его в каком-то AppState-Store, который сам основан на значении ключа?

Я просмотрел несколько блогов, но они описывают только типичный вариант использования "ToDo-List", который не применим в моем случае. В конце у меня был бы только один случай редуктора "SET_NEW_RESULTS_FROM_SERVER", который несколько неуместен.

1 ответ

Вы должны смоделировать весь жизненный цикл запроса:

  1. REQUEST_RESULTS_FROM_SERVER
  2. REQUEST_RESULTS_FROM_SERVER_SUCCESS
  3. REQUEST_RESULTS_FROM_SERVER_FAILURE,

Зачем? Индикатор загрузки, отображаемые пользователю сообщения об ошибках и другие причины.

Магазин инициализируется чем-то вроде null (так что ваше представление может отображаться до того, как что-либо было извлечено), и когда ответ содержит действительные данные, вы сохраняете их там (для меня "пара пар значений и значений" звучит как простой объект).

Ваши данные не обязательно должны иметь свой собственный редуктор. Зависит от вашего заявления, конечно, что мы не знаем.

Кроме того, когда вы извлекаете данные через ajax в redux, редуктор обычно должен отслеживать:

  • В результате ваша полезная нагрузка в ответе
  • Любое сообщение об ошибке в случае REQUEST_RESULTS_FROM_SERVER_FAILURE
  • Или нет, запрос еще не обработан - так что ваше мнение может адаптироваться соответственно

Пример:

{ result: null, error: null, isLoading: false }

Другие вопросы по тегам