在这种情况下如何清除超时?



在这种情况下如何清除超时?

代码:

const [flag, setFlag] = useState<boolean>(false);
const timerFlag = useRef<null | ReturnType<typeof setTimeout>>(null);
const handlePressCancel2 = () => {
timerFlag.current = setTimeout(() => {
setFlag(true)
}, 150);
}

如果你想在销毁组件时清除超时,你必须为此使用useEffect:

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);
}
};
}, []);

试着做一个回归来明确时机Return () =>clearTimeout (handlePressCancel2)

最新更新