javascript - clearTimeout 在 React Native 中不起作用

标签 javascript react-native

我有四个屏幕 A(主页)、B、C、D

每个屏幕都有一个函数,当屏幕onStart出现时会被触发。或 onResume ,我是通过react-redux来实现的。

countdownToFirstScreen = () => {
    this.timeOut = setTimeout(()=> {
      clearTimeout(this.timeOut); // clearTimeout before navigate next screen
      this.props.leaveTheScreenTime(); // change for some redux store boolean
      this.props.navigation.navigate('A');
    }, 9000);    
  }

如果用户点击 <Button />在倒计时结束之前,我也设置了 clearTimeout。

<Button 
  onPress={() => { 
    clearTimeout(this.timeOut);
    this.props.navigation.navigate('nextScreen');
  }
/>

当我只是在 A、B 和 C 之间导航时,它正在工作。

当我尝试从 C 导航到 D 时出现问题。

C屏函数countdownToFirstScreen即使我点击 <Button /> 也会被触发在C屏上。

任何人都知道我的 setTimeout 发生了什么事和 clearTimeout

最佳答案

使用 React-HooksFunctional Components ...事情变得容易多了...

empty-deps [] 模拟 componentDidMount 的效果,其 cleanUp-callback 模拟 componentWillUnmount

  const timerRef = useRef(null);

  useEffect(() => {
    timerRef.current = setTimeout(() => {
      /** Your logic goes here */
    }, 9000);

    return () => {
      if (timerRef.current) {
        clearTimeout(timerRef.current);
      }
    };
  }, []);

关于javascript - clearTimeout 在 React Native 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54394949/

相关文章:

c# - Kendo Grid 绑定(bind)到字符串列表

react-native - 当 native 应用程序处于后台/设备被锁定时,如何防止socket.io断开连接?

javascript - Flex 包装器使 TextInput 在其父级之外呈现

javascript - 正则表达式在字符串中的时间后提取句号/句点

javascript - 没有iframe的嵌入式小部件中的自定义样式

javascript - 为什么有人会关闭 Nagle 的算法?

javascript - 如何在平行坐标图中使用不同方向的轴标签

react-native - 将自定义图标添加到抽屉导航

reactjs - 如何在react-native 0.56 (Babel 7) 中通过装饰器使用mobx

Android 模拟器未与我的 React Native 应用程序一起运行