redux-observable v1的状态可观察性(state $)不是redux单向数据流的反模式吗?

时间:2018-08-31 02:25:26

标签: reactjs redux react-redux redux-observable

据我了解,redux严格来说是单向数据流。

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 :(得分:1)

不。 “单向数据流”的主要思想是应用程序的其他随机部分无法(或不允许)自己更改这些数据。取而代之的是,拥有该数据的应用程序部分负责所有更改,无论是Redux存储还是有状态的React组件。

在您描述的特定示例中,所有状态更新仍然是由分派到Redux存储的操作引起的,任何状态更新都可以追溯到分派的操作和提供更新状态的reducer函数。

>

现在,是的,复杂的异步逻辑 可能会陷入混乱,但这是一个单独的问题,而不是“单向数据流”的概念。