如何将 setInterval 与 redux-thunk 一起使用?
how to use setInterval with redux-thunk?
我正在使用 redux-thunk 来管理异步函数,我想在 action creator 中使用 setInterval,这是我的代码:
export const startLobbyPolling = () => dispatch => {
const pollTimer = setInterval(() => {
dispatch(fetchLobby);
}, POLL_TIME);
dispatch({ type: START_LOBBY_POLLING, payload: pollTimer });
};
fetchLobby
是另一个简单地获取请求并存储其数据的动作创建器。
但令人惊讶的是它不起作用,因为它只在 redux 调试器工具中显示 START_LOBBY_POLLING
操作,之后什么也没有发生。如果知道如何将 setInterval 与 redux 一起使用,我将不胜感激。
使用 setInterval
和 redux-thunk
没有什么特别之处。它应该像在其他任何地方一样工作。您需要查看 setInterval
.
中使用的回调函数
我建议不要使用 redux 作为轮询管理器。
相反,你应该有一个组件/容器来为你做这件事。原因是,当组件被卸载时,您的轮询也将被正确取消
const PollContainer = ({ fetchLoby, children }) => {
useEffect(() => {
const ptr = setInterval(fetchLoby, POLL_TIME)
return () => clearInterval(ptr)
}, [fetchLoby])
return children
}
您现在可以使用您的 PollContainer,只要它已安装,它就会保持 fetchLoby。
看来我应该调用函数而不是将它作为参数传递给 dispatch
dispatch(fetchLobby);
-->
dispatch(fetchLobby());
现在可以使用了
我正在使用 redux-thunk 来管理异步函数,我想在 action creator 中使用 setInterval,这是我的代码:
export const startLobbyPolling = () => dispatch => {
const pollTimer = setInterval(() => {
dispatch(fetchLobby);
}, POLL_TIME);
dispatch({ type: START_LOBBY_POLLING, payload: pollTimer });
};
fetchLobby
是另一个简单地获取请求并存储其数据的动作创建器。
但令人惊讶的是它不起作用,因为它只在 redux 调试器工具中显示 START_LOBBY_POLLING
操作,之后什么也没有发生。如果知道如何将 setInterval 与 redux 一起使用,我将不胜感激。
使用 setInterval
和 redux-thunk
没有什么特别之处。它应该像在其他任何地方一样工作。您需要查看 setInterval
.
我建议不要使用 redux 作为轮询管理器。
相反,你应该有一个组件/容器来为你做这件事。原因是,当组件被卸载时,您的轮询也将被正确取消
const PollContainer = ({ fetchLoby, children }) => {
useEffect(() => {
const ptr = setInterval(fetchLoby, POLL_TIME)
return () => clearInterval(ptr)
}, [fetchLoby])
return children
}
您现在可以使用您的 PollContainer,只要它已安装,它就会保持 fetchLoby。
看来我应该调用函数而不是将它作为参数传递给 dispatch
dispatch(fetchLobby);
-->
dispatch(fetchLobby());
现在可以使用了