Разве наблюдаемое состояние (state $) для наблюдаемого в редуксе v1 не является антипаттерном однонаправленного потока данных в избыточности? - PullRequest
0 голосов
/ 31 августа 2018

Насколько я понимаю, избыточность - это строго однонаправленный поток данных.

actions (data in) -> store updates (reducer) -> react render (data flow ends here)

С наблюдаемым действием оно все еще однонаправлено

 actions -> state changes -> react render
 ^    |
 |    |
epics<-

Однако при наблюдаемом состоянии данные возвращаются обратно

actions -> state changes -> react render
   ^          |
   |          |
   epics <----

В результате это может привести к бесконечным потокам данных, когда

  • epicA подписался на изменение stateA изменения stateB и
  • epicB подписался на изменение stateB изменений stateA.

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

У меня где-нибудь есть недоразумения?


Чтобы прояснить мой вопрос, разве диспетчеризация действий с наблюдаемым состоянием не является антипаттерном однонаправленного потока данных Redux?

1 Ответ

0 голосов
/ 31 августа 2018

Нет. Основная идея «однонаправленного потока данных» заключается в том, что случайным образом другие части приложения не могут (или не могут) изменять эти фрагменты данных сами. Вместо этого часть приложения, которой принадлежат эти данные, отвечает за все изменения, будь то хранилище Redux или компонент React с отслеживанием состояния.

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

Теперь, да, сложная асинхронная логика может запутаться, но это отдельный вопрос, чем концепция "однонаправленного потока данных".

...