Asyn c Todo список состояний загрузки Redux - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть базовое c CRUD приложение с Messages, Message и MessageForm компонентами. MessageForm - для добавления сообщений, а редактирование сообщения выполняется с помощью встроенного редактирования. Так что это базовое c asyn c приложение Todo.

Проблема в том, что я хочу иметь отдельные состояния загрузки и ошибок на уровне Message, а не только на уровне Messages. Почему? Поскольку операции addMessage, editMessage и deleteMessage находятся на уровне Message (единственном числе) и перерисовывают только часть списка Messages, поэтому я хочу раздельные состояния загрузки и состояния ошибок пока добавляются, редактируются или удаляются http-запросы.

Мое основное замешательство - , где , что loading, error состояние за Message должно быть сохранено?

До сих пор у меня есть ключ isLoadingMessageId в исходном состоянии в messagesReducer, где я сохраняю Id текущего отредактированного или удаляемого сообщения или постоянную 'adding' для добавленного сообщения, и она работает нормально, но я не уверен, что это самое элегантное решение. Я чувствую, что это может быть сделано лучше с отдельным messageReducer (единственное).

Я знаю о примере Todo MVC, но он не асин c и не имеет состояний loading и error. Если бы кто-то мог опубликовать, какие редукторы мне нужны и их начальные состояния, это мне очень помогло бы?

Мое текущее начальное состояние:

const initialState = {
  messages: [],
  isLoading: false,
  error: null,
  isLoadingMessageId: null,
};

Полный исходный код: здесь

...