Reactjs with Flux:在Flux应用程序中何时何地初始化计时器实用程序

Reactjs with Flux:在Flux应用程序中何时何地初始化计时器实用程序,reactjs,reactjs-flux,Reactjs,Reactjs Flux,在我的申请中,我有三种不同的情况: 计时器设置为10秒的间隔,在要求停止之前不会停止 异步Api实用程序模块触发一个函数,以便在计时器再次启动时调用Api 我有一个组件(附带操作和存储模块),它获取api数据(具有相同属性的类似项的列表)并将它们呈现到页面上 我的问题是: 我应该在何时何地将计时器初始化为,以便我的组件可以在调用其render()方法后开始接收数据 我曾考虑在返回之前将其放入render函数中,但这没有意义,因为我需要在收到数据后立即将api数据呈现到页面中 我是否错误地构造了

在我的申请中,我有三种不同的情况:

  • 计时器设置为10秒的间隔,在要求停止之前不会停止
  • 异步Api实用程序模块触发一个函数,以便在计时器再次启动时调用Api
  • 我有一个组件(附带操作和存储模块),它获取api数据(具有相同属性的类似项的列表)并将它们呈现到页面上
  • 我的问题是:

    我应该在何时何地将计时器初始化为,以便我的组件可以在调用其
    render()
    方法后开始接收数据


    我曾考虑在返回之前将其放入
    render
    函数中,但这没有意义,因为我需要在收到数据后立即将api数据呈现到页面中


    我是否错误地构造了此应用程序?我的计时器和/或Api实用程序也应该是React组件吗?

    我确信有几种方法可以实现,但这是我的2美分:

    假设您有LogViewer应用程序,并且希望每10秒获取和显示一次日志

    • 然后您将拥有一个
      LogStore
      和一个
      LogViewer
      组件
    • LogViewer
      组件的
      componentDidMount
      方法中,我将调用
      LogStore.getLogs()
    • LogStore.getLogs()
      将调用
      APIUtils.getLogs()
      并设置每10秒触发一次的计时器,该计时器每次触发时都调用
      APIUtils.getLogs()
      。设置计时器后,
      LogStore.getLogs()
      立即返回一个空数组
    • 空数组由
      LogViewer
      组件呈现(或显示加载条)
    • 同时,来自
      APIUtils.getLogs()
      的ajax调用返回,并且
      GET\u LOGS\u SUCCESS
      服务器操作被分派到所有存储区
    • LogStore
      保存传入日志,并为
      LogViewer
      组件发出更改事件,以再次调用
      LogStore.getLogs()
      函数
    • 如果您想在某个时候停止计时器,那么在
      LogViewer
      组件中,我会有一个停止按钮,当单击时,该按钮会依次创建
      GET\u LOGS\u stop
      操作
    • GET\u LOGS\u STOP
      操作被调度到
      LogStore
      时,它将通过停止计时器作出反应

    我想那会满足你的要求。

    这真的很有帮助。在异步调用完成之前,我没有想到返回空数据,以便在UI中运行。哪里是发送GET_LOGS_SUCCESS的最合适位置,因为Aputils自然没有附带的APIActions模块?您可以有一个
    ServerActionCreator
    (或
    ApiationCreator
    )从
    aputils.getLogs()
    中ajax函数的
    success
    回调中初始化并调用
    ServerActionCreator.receiveGetLogs
    。然后
    ServerActionCreator.receiveGetLogs
    GET\u LOGS\u SUCCESS
    操作分派给分派器。再次感谢您的输入;有了它,我能够理智地开始这个项目。