У меня есть базовое 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,
};
Полный исходный код: здесь