В нескольких блогах и т. Д. Есть учебник по CRUD с Redux.
Ни один из них (AFAIK после серфинга) не имеет дело с полностью асинхронным API на серверах, как, например, fire-and-забудь поведение.
Основные команды в среде CQRS часто имеют дело с подобными действиями "забей и забудь".
Давайте возьмем вымышленный пример Twitter, чтобы легко понять:
По сути, в контексте синхронного CRUD API вы, вероятно, имеете:
- Действие Redux: POST_TWEET
- Серверный API: возврат всего созданного твита в данных ответа.
- Состояние: TweetReducer исследование и сохранение данных созданного твита из ответа.
- Пользовательский интерфейс: прослушивание нового твита из состояния Tweet напрямую.
TweetReducer , кроме классических API извлечения, может полностью обрабатывать действие POST_TWEET , поскольку оно может охватывать новый твит напрямую.
Однако в контексте API-интерфейса fire-and-Forgot на сервере:
- Redux Action: POST_TWEET
- Серверный API: возвращает в ответе только идентификатор твита (например, местоположение).
- Состояние: TweetReducer не обрабатывает создание, так как твит недоступен во время запуска действия успеха.
Таким образом, новое состояние Redux, предназначенное для обработки создания твитов, помечено TweetCreation , как правило, обладающее этими свойствами: (data: {id: string}, inProgress: boolean, errors: []
).
Затем он получит идентификатор недавно созданного твита в данных и позволит пользовательскому интерфейсу прослушивать это состояние ( TweetCreation ).
- Пользовательский интерфейс: прослушивает состояние
TweetCreation
и, следовательно, отображает, что твит отправляется или даже пытается извлечь сервер через некоторый интервал времени, чтобы получить полный твит.
Является ли хорошей практикой, что некоторые люди экспериментируют с добавлением другого состояния в хранилище Redux для работы с API-интерфейсами "забывай и забывай" ?
Это "общепринятый" в сообществе или есть другой умный способ?