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)

相似文章

tfsbuild - 构建服务器上的单元测试失败

我们有一个构建服务器在做CI。突然之间,单元测试没有任何更改就失败了。我们收到以下错误:未处理的异常:System.AggregateException:发生一个或多个错误。--->Microsoft...

随机推荐

最新文章