-1

我想重复这个动作并每 10 秒重新渲染一次。有人可以帮我吗?

   useEffect(() => {
  const fetchData = async () => {
    setIsLoading(true)
    const response = await coinGecko.get("/coins/markets", {
      params: {
        vs_currency: "usd",
        ids: watchList.join(","),
      }
    })
    setCoins(response.data)
    setIsLoading(false)
  }

  fetchData()
},[])
4

1 回答 1

1

定义一个状态: const [repeater,setRepeater]=useState(0) 在您的 useEffect 中将其作为第二个参数传递,因此无论何时更改,您的 useEffect 都会再次运行。现在让我们用这段代码来处理 10 秒的时间间隔: setTimeout(() => setRepeater(prevState=>prevState+1), 100000); 最后像 tis 一样实现它:

   useEffect(() => {
  const fetchData = async () => {
    setIsLoading(true)
    const response = await coinGecko.get("/coins/markets", {
      params: {
        vs_currency: "usd",
        ids: watchList.join(","),
      }
    })
    setCoins(response.data)
    setIsLoading(false)
  }

  fetchData()
  setTimeout(() => setRepeater(prevState=>prevState+1), 100000);
},[repeater])
于 2021-09-21T16:40:19.993 回答