Вызывает ли другое действие в слушателе магазина анти-паттерн для Flux?

В моей кодовой базе я запускаю действия в некоторых слушателях магазина. Однако недавно я слышал, что это плохая практика. Почему это плохо и как мне это исправить или рефакторинг? Я провел исследование по этой проблеме, но не смог найти хороший пример.

К вашему сведению, чтобы запустить действие (я), я использую action.defer предоставлено Alt.js.

1 ответ

Ваш подход - действительный шаблон Flux, однако, когда функция, которая обрабатывает действия, запускает другое действие, она легко становится точкой ошибки в вашем коде, и становится трудно отследить ошибку.


Как провести рефакторинг:

Зависит от того, что означает действие, запущенное в данный момент магазином:

  • Если вы запускаете действие B каждый раз, когда запускается действие A, создатель действия (код, который вызывает action.defer) должен запустить A, а затем запустить B
  • Если B срабатывает только тогда, когда состояние вашего магазина удовлетворяет некоторым критериям, вы можете проверить это предыдущее состояние в действии create и выбрать запуск B после A или нет.
Другие вопросы по тегам