Reactjs 从侦听器回调后调用操作,然后。。。不能在发车中途发车吗?

Reactjs 从侦听器回调后调用操作,然后。。。不能在发车中途发车吗?,reactjs,flux,reactjs-flux,Reactjs,Flux,Reactjs Flux,我遇到了反应和流量的麻烦。。。我们有一个与新的Flux聊天示例非常相似的应用程序。我们有一个著名的错误:“不能在调度中途发车”。但是,在某些情况下,我们很难用一种好的方式来解决这个问题 我们的怀疑与此相同,但我不能很好地理解所采用的解决方案。据我所知,这不是一个非常优雅的解决方案 以下是事件的顺序: 行动A已发出 商店更新其内部状态并发出更改消息 react组件X(通过侦听器的回调)接收更改消息并更新其状态(setState) 组件X进行渲染,作为渲染的一部分,还安装了一个新组件Y。我们使用状态

我遇到了反应和流量的麻烦。。。我们有一个与新的Flux聊天示例非常相似的应用程序。我们有一个著名的错误:“不能在调度中途发车”。但是,在某些情况下,我们很难用一种好的方式来解决这个问题

我们的怀疑与此相同,但我不能很好地理解所采用的解决方案。据我所知,这不是一个非常优雅的解决方案

以下是事件的顺序:

  • 行动A已发出

  • 商店更新其内部状态并发出更改消息

  • react组件X(通过侦听器的回调)接收更改消息并更新其状态(setState)

  • 组件X进行渲染,作为渲染的一部分,还安装了一个新组件Y。我们使用状态信息选择要渲染的组件(Y、Z等)

  • 新组件Y需要显示初始未加载的数据。所以我们在组件Y的componentDidMount()中调用一个API,它调用一个动作B

  • 然后,对于操作B中的新调度程序,我们有这个调度错误

    如果您认为我们的应用逻辑有一些问题,我可以带一些实践例子来说明为什么这种情况对于我们来说是常见的。任何关于如何重构这个“通量”的想法都是非常受欢迎的


    谢谢你的帮助

    我认为您需要在启动操作b之前使用调度程序的
    waitFor
    令牌(您正在使用
    flux
    npm模块中的调度程序,对吗?)。此外,如果您总是需要操作b中的数据,那么您可以在操作A期间从您的商店调用ajax

    solution b would look like this in /* store.js */
    
    Dispatcher.register(function(payload){
      switch payload.type {
        case ACTION_A:
          /* do your state logic */
          StoreDataAccessLayer.apiCall()
      }
    }
    

    其中有一个数据访问层类/对象,它封装了对api的ajax调用。使用存储中的状态作为输入,并从success函数调用triggerchange。这是我在使用
    flux
    npm模块时看到的原始解决方案,如果您不使用
    waitFor

    Hi!我不想要求商店采取行动。“Flux应用程序中的数据是单向流动的”:您不会使用操作来进行api调用。您正在将api移动到第一个操作的cycleMy错误中。我说这是因为我们在调用API之后发送API结果(有效负载),因为一些组件正在侦听此API调用。我们的解决方案类似:。我不能从动作a中分派所有API调用,因为这个存储不知道需要什么API调用,因为只有组件(Y、Z等)知道这一点。我会举两个实际例子来澄清这个问题。