在這種情況下如何清除超時?
代碼:
const [flag, setFlag] = useState<boolean>(false);
const timerFlag = useRef<null | ReturnType<typeof setTimeout>>(null);
const handlePressCancel2 = () => {
timerFlag.current = setTimeout(() => {
setFlag(true)
}, 150);
}
uj5u.com熱心網友回復:
如果您想在銷毀組件時清除超時,您必須useEffect為此使用 an:
const [flag, setFlag] = useState<boolean>(false);
const timerFlag = useRef<null | ReturnType<typeof setTimeout>>(null);
const handlePressCancel2 = () => {
timerFlag.current = setTimeout(() => {
setFlag(true);
}, 150);
};
useEffect(() => {
return () => {
if (timerFlag.current) {
clearTimeout(timerFlag.current);
}
};
}, []);
uj5u.com熱心網友回復:
嘗試做一個return清除定時return() => clearTimeout(handlePressCancel2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/477998.html
上一篇:useState不更新陣列
