[英]how to use setInterval with redux-thunk?
我正在使用 redux-thunk 來管理異步函數,並且我想在動作創建者中使用 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 一起使用,我將不勝感激。
我建議不要使用 redux 作為輪詢管理器。
相反,您應該有一個為您執行此操作的組件/容器。 原因是,當組件將被卸載時,您的輪詢也將被正確取消
const PollContainer = ({ fetchLoby, children }) => {
useEffect(() => {
const ptr = setInterval(fetchLoby, POLL_TIME)
return () => clearInterval(ptr)
}, [fetchLoby])
return children
}
您現在可以使用 PollContainer,只要它已安裝,它將保持 fetchLoby。
將setInterval
與redux-thunk
一起使用並沒有什么特別之處。 它應該像在其他任何地方一樣工作。 您需要查看已在setInterval
中使用的回調 function 。
似乎我應該調用 function 而不僅僅是將它作為參數傳遞給dispatch(fetchLobby);
--> dispatch(fetchLobby());
現在可以了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.