簡體   English   中英

如何將 setInterval 與 redux-thunk 一起使用?

[英]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。

setIntervalredux-thunk一起使用並沒有什么特別之處。 它應該像在其他任何地方一樣工作。 您需要查看已在setInterval中使用的回調 function 。

似乎我應該調用 function 而不僅僅是將它作為參數傳遞給dispatch(fetchLobby); --> dispatch(fetchLobby()); 現在可以了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM