Является ли корректным в идеологии Redux диспатчить экшен постфактум?

Доброго дня.
Есть роутер (react-router). Сделал интеграцию роутинга с Redux, и получается так, что, дабы не ломать работу react-router, мне приходится диспатчить экшен ROUTE_CHANGE после того, как роут изменился. В коде я реализую это прослушиванием изменений истории браузера. Собственно, уже существующий react-router-redux работает так же, только менее гибок и не позволяет передавать параметры в state.

Далее, поскольку диспатч ROUTE_CHANGE реализован постфактум, очень удобно пользоваться нативными же средствами react-router, в частности, компонентом Redirect для того, чтобы в нужных местах делать редиректы, вместо dispatch(push('/route')).

Собственно, суть вопроса: допустимо ли это? Очередность событий получается следующей: смена роута > dispatch > обновление state. Насколько я знаю, redux предполагает несколько иную очередность: dispatch > смена роута в ответ на dispatch > обновление state.
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
А зачем вам понадобилась подобная интеграция роутинга с Redux? Я к тому, что многие люди пихают в стор все подряд, сами не понимая зачем.

смена роута > dispatch > обновление state

Непонятно зачем вообще в этой схеме dispatch > обновление state, почему бы не использовать
dispatch(push('/somePlace')); раз уж в проекте используетеся react-router-redux?

Насколько я знаю, redux предполагает несколько иную очередность: dispatch > смена роута в ответ на dispatch > обновление state.


Непосредственно Redux предполагает только dispatch > обновление state. Остальное это middleware и сайд эффекты.

Мы в последних двух проектах вообще не использовали react-router-redux.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы