React 子组件直接调用 flux 应用程序中的 Action - 不好的做法?

React child component directly invokes Action in flux app - bad practice?

我是一个 JS 新手,正在从零开始开发一个 flux 应用程序。

目前根组件有Action实例,子组件分配有调用Action的事件处理器。更深层的后代被分配了最终到达 Action 的处理程序,但这让我不愿意维护回调流程。

我制作了一个静态解析器来提供对 Action 的访问,例如:

var action = Resolver.resolveAction(); // Returns singleton action

这样子组件就可以直接调用Action,通过共享的Dispatcher发出。只有根组件在监听 Store 并刷新整个组件树。

我猜这并没有偏离 flux 方式,虽然不太自信。这是一种不好的做法,还是有其他选择?

您描述的第一个动作应表示为 Action Creator。这是触发事件处理程序时触发的内容。我认为你的问题是问你应该如何处理从动作创建者返回的数据?

在那种情况下,您将编写另一个 Action 来接收该响应并发送给调度程序。然后调度程序会到达适当的商店,并且该商店会向所有监听的组件发出更改。当商店发出时,它将 "refresh the whole component tree"(假设您有商店侦听器和状态侦听这些更改)。

这只是通量方式,允许您没有回调树——那是不好的做法。