Reactjs with Flux:在Flux应用程序中何时何地初始化计时器实用程序
在我的申请中,我有三种不同的情况:Reactjs with Flux:在Flux应用程序中何时何地初始化计时器实用程序,reactjs,reactjs-flux,Reactjs,Reactjs Flux,在我的申请中,我有三种不同的情况: 计时器设置为10秒的间隔,在要求停止之前不会停止 异步Api实用程序模块触发一个函数,以便在计时器再次启动时调用Api 我有一个组件(附带操作和存储模块),它获取api数据(具有相同属性的类似项的列表)并将它们呈现到页面上 我的问题是: 我应该在何时何地将计时器初始化为,以便我的组件可以在调用其render()方法后开始接收数据 我曾考虑在返回之前将其放入render函数中,但这没有意义,因为我需要在收到数据后立即将api数据呈现到页面中 我是否错误地构造了
render()
方法后开始接收数据
我曾考虑在返回之前将其放入
render
函数中,但这没有意义,因为我需要在收到数据后立即将api数据呈现到页面中
我是否错误地构造了此应用程序?我的计时器和/或Api实用程序也应该是React组件吗?我确信有几种方法可以实现,但这是我的2美分: 假设您有LogViewer应用程序,并且希望每10秒获取和显示一次日志
- 然后您将拥有一个
和一个LogStore
组件LogViewer
- 在
组件的LogViewer
方法中,我将调用componentDidMount
LogStore.getLogs()
将调用LogStore.getLogs()
并设置每10秒触发一次的计时器,该计时器每次触发时都调用APIUtils.getLogs()
。设置计时器后,APIUtils.getLogs()
立即返回一个空数组LogStore.getLogs()
- 空数组由
组件呈现(或显示加载条)LogViewer
- 同时,来自
的ajax调用返回,并且APIUtils.getLogs()
服务器操作被分派到所有存储区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
操作分派给分派器。再次感谢您的输入;有了它,我能够理智地开始这个项目。