相关疑难解决方法(0)

React hooks - 清除计时器的正确方法

我不明白为什么当我使用setTimeout函数时我的react组件启动到无限的console.log.一切正常,但PC开始落后于地狱.有些人说超时功能会改变我的状态和rerender组件,设置新的计时器等等.现在我需要了解如何清除它是正确的.

export default function Loading() {
  // if data fetching is slow, after 1 sec i will show some loading animation
  const [showLoading, setShowLoading] = useState(true)
  let timer1 = setTimeout(() => setShowLoading(true), 1000)

  console.log('this message will render  every second')
  return 1
}
Run Code Online (Sandbox Code Playgroud)

清除不同版本的代码无助于:

const [showLoading, setShowLoading] = useState(true)
  let timer1 = setTimeout(() => setShowLoading(true), 1000)
  useEffect(
    () => {
      return () => {
        clearTimeout(timer1)
      }
    },
    [showLoading]
  )
Run Code Online (Sandbox Code Playgroud)

javascript settimeout reactjs react-hooks

18
推荐指数
7
解决办法
2万
查看次数

标签 统计

javascript ×1

react-hooks ×1

reactjs ×1

settimeout ×1