Вызывает ли другое действие в слушателе магазина анти-паттерн для Flux?
В моей кодовой базе я запускаю действия в некоторых слушателях магазина. Однако недавно я слышал, что это плохая практика. Почему это плохо и как мне это исправить или рефакторинг? Я провел исследование по этой проблеме, но не смог найти хороший пример.
К вашему сведению, чтобы запустить действие (я), я использую action.defer
предоставлено Alt.js.
1 ответ
Ваш подход - действительный шаблон Flux, однако, когда функция, которая обрабатывает действия, запускает другое действие, она легко становится точкой ошибки в вашем коде, и становится трудно отследить ошибку.
Как провести рефакторинг:
Зависит от того, что означает действие, запущенное в данный момент магазином:
- Если вы запускаете действие B каждый раз, когда запускается действие A, создатель действия (код, который вызывает action.defer) должен запустить A, а затем запустить B
- Если B срабатывает только тогда, когда состояние вашего магазина удовлетворяет некоторым критериям, вы можете проверить это предыдущее состояние в действии create и выбрать запуск B после A или нет.