Как структурировать избыточное хранилище для ответа сервера
Этот вопрос может рассматриваться как "основанный на мнении", но я просто ищу вдохновение здесь, так что вот оно:
В моем приложении я запрашиваю данные с сервера. Эти данные не являются списком или чем-то еще, в основном это просто набор пар ключ-значение, которые затем должны отображаться пользователю. Подобный используемый случай описан здесь. Должен ли я сохранять результаты поиска в магазине приставок?
Теперь возникает вопрос: как мне хранить эти данные в онлайн-магазине. У него есть собственный редуктор? Или я храню его в каком-то AppState-Store, который сам основан на значении ключа?
Я просмотрел несколько блогов, но они описывают только типичный вариант использования "ToDo-List", который не применим в моем случае. В конце у меня был бы только один случай редуктора "SET_NEW_RESULTS_FROM_SERVER", который несколько неуместен.
1 ответ
Вы должны смоделировать весь жизненный цикл запроса:
REQUEST_RESULTS_FROM_SERVER
REQUEST_RESULTS_FROM_SERVER_SUCCESS
REQUEST_RESULTS_FROM_SERVER_FAILURE
,
Зачем? Индикатор загрузки, отображаемые пользователю сообщения об ошибках и другие причины.
Магазин инициализируется чем-то вроде null
(так что ваше представление может отображаться до того, как что-либо было извлечено), и когда ответ содержит действительные данные, вы сохраняете их там (для меня "пара пар значений и значений" звучит как простой объект).
Ваши данные не обязательно должны иметь свой собственный редуктор. Зависит от вашего заявления, конечно, что мы не знаем.
Кроме того, когда вы извлекаете данные через ajax в redux, редуктор обычно должен отслеживать:
- В результате ваша полезная нагрузка в ответе
- Любое сообщение об ошибке в случае
REQUEST_RESULTS_FROM_SERVER_FAILURE
- Или нет, запрос еще не обработан - так что ваше мнение может адаптироваться соответственно
Пример:
{
result: null,
error: null,
isLoading: false
}