Я пытаюсь создать приложение для приборной панели, которое должно иметь: строка состояния вверху (с кнопкой входа / выхода) панель инструментов слева (с кнопками меню) эту панель инструментов можно свернуть область содержимого посередине (где должны отображаться маршруты)
Я пытаюсь построить его с помощью Reactjs и Redux, и я начал думать о структуре состояний:
{
ui: {
menuBarIsCollapsed: true
},
users: {
all: [{}, {}],
currentUser: { username: '', email: '', ...}
},
...(this users part is repeated for each menu)
}
Когда я нажимаю на меню слева, содержимое в середине должно измениться (только эта часть).
Я создал компонент, который содержит панель инструментов и строку состояния, а затем div, содержащий эту часть.
Это прекрасно работает.
В этом контексте мне нужна форма для создания пользователей, чтобы вернуться на домашнюю страницу после успешного сохранения. Изменение маршрута - это побочный эффект, поэтому думаю, мне нужно что-то вроде саги.
Я не могу найти хороший пример этого в Интернете, я думаю, что мне следует сделать следующее: onSubmit -> отправить сагу, которая отправляет действие "сохранить" когда действие завершено, если все в порядке, сага отправляет действие «save_complete», а затем, в качестве побочного эффекта, подталкивает новый маршрут.
У меня в голове все достаточно ясно, но я не могу придумать, как это кодировать.
Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


При сохранении вы можете следовать этому рабочему процессу:
{ type: "SAVE", form } с вашего Form.redux:
redux, чтобы отразить результат предыдущих действий.FormRedirect из react-router из этого компонента Form для запуска перенаправления домашней страницыЯ бы посоветовал не использовать любое решение, которое хранит состояния маршрутизации внутри redux, поскольку это может привести к проблемам с их синхронизацией и отдать предпочтение архитектуре, которая четко различает маршрутизацию и состояние локального приложения.
Здесь документы для компонента Redirect в react-router
Я думаю, что в документации redux есть пример в демонстрационном приложении todo маршрутизации и redux. в основном маршрутизация используется только для передачи информации о том, как данные должны быть представлены. Фактическая обработка и выборка данных обрабатываются внутри redux. см. этот вопрос также stackoverflow.com/questions/51734197/…. Я бы сказал, что описанный вами паттерн довольно распространен. особенно в строго типизированном контексте, где вы можете гарантировать, что отправленные действия действительно соответствуют любому используемому вами Ajax api (fetch, axios)
Спасибо, вы бы не советовали использовать saga для вызовов ajax? Я использовал промежуточное программное обеспечение, которое позволяет мне создать запрос в actionCreator и передать его как полезную нагрузку в действие, которое будет отправлено, промежуточное программное обеспечение выполняет запрос и передает ответ редуктору. Я не уверен, хорошая это идея или нет