【发布时间】:2019-09-21 03:07:46
【问题描述】:
我在 useEffect 之外调用了 setTimeout,如何在屏幕卸载时清除 Timeout?
例如,我有一个带有这个的功能组件...
...
useEffect(() => {
return () => clearTimeout(myTimeout)
}, [])
_getData = () => {
fetch()
.then(data => {
let myTimeout = setTimeout(() => setSomething(!something), 5000)
})
}
所以稍后在代码中的某个地方我调用 _getData() - 我不希望它在页面首次加载时使用 useEffect 运行,只有在采取某些操作时。获得数据后,我设置了超时。但是 useEffect 不知道这个超时。
我试过这样设置超时...
_getData...
setTimeoutVar(setTimeout(() => setSomething(!something), 5000))
useEffect...
return () => clearTimeout(setTimeoutVar)
我尝试了其他一些奇怪的想法,但没有任何效果,我无法弄清楚这个。
想法?
【问题讨论】:
标签: react-native settimeout cleartimeout