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

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

代码:

const [flag, setFlag] = useState<boolean>(false);

  const timerFlag = useRef<null | ReturnType<typeof setTimeout>>(null);

  const handlePressCancel2 = () => {
     timerFlag.current = setTimeout(() => {
     setFlag(true)
    }, 150);
  }

回答1

如果要在销毁组件时清除超时,则必须为此使用 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);
      }
    };
 }, []);

回答2

尝试做一个return清除定时return() => clearTimeout(handlePressCancel2)

相似文章

最新文章