簡體   English   中英

在本機 useEffect 中停止無限循環

[英]Stop infinite loop in react native useEffect

我通過setInterval調用一個 function 但 function go 無限循環,我的應用程序卡住了。 它發生在 android,有人可以幫我解決這個問題。

謝謝

  useEffect(() => {
    const interval = setInterval(() => {
      sendCoordinate(location);
    }, 180000);

    return () => clearInterval(interval);
  }, [location]);

我正在呼叫的 function

const sendCoordinate = async (locParms) => {
    console.log("@2 it working3", checkDayStatus, location);
    if (checkDayStatus === "Started") {
      let data = {
        lat:
          locParms !== null
            ? locParms && locParms.lat
            : location && location.lat,
        lng:
          locParms !== null
            ? locParms && locParms.lng
            : location && location.lng,
        dispatcher_id: 1,
        truck_id: 1,
      };

      return await LocationAPI.sendLocationFeed(data);
    }
  };

原來你的timer每次都是創建的,把useEffect arguments留空就行了,[location] -> []

useEffect(() => {
  const interval = setInterval(() => {
    sendCoordinate(location);
  }, 180000);

  return () => clearInterval(interval);
}, [location.lng, location.lat]);

所以你需要像這樣從依賴數組中更改位置。

暫無
暫無

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

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