setTimeout 不执行



我正在使用 react native 来制作应用程序。我需要等待十秒钟,然后在屏幕中进行重定向。这是我的代码:

onPressEnter() {
      setTimeout(onPressEnter(), 5000);
      //////Redirecting
        changePage("Error");
    }
但是,我

找到的超时命令要么显示否,要么它们给了我一个错误:

找不到按回车键

我应该提到,此方法通过屏幕中的按钮调用。

你能帮我如何正确实现超时吗?

以下示例可能会有所帮助。当执行onPressEnter()函数时,首先检查是否已经有一个计时器从以前的执行中运行。如果是这样,则什么都不做。否则,将超时设置为 10 秒,然后运行调用changePage()函数的函数。

class MyComponent extends React.Component {
  onPressEnter = () => {
    if(this.timer > 0) return;
    this.timer = setTimeout(() => {
      this.changePage("Error");
      this.timer = null;  //not necessary if you are unmounting the component
    }, 10000);
  }
  changePage = (page) => {
    console.log("redirecting to " + page);
  }
  render() {
    return <button onClick={this.onPressEnter}>Redirect</button>
  }
}
ReactDOM.render(<MyComponent />, document.getElementById("app"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script>
<div id="app"></div>

如果将函数添加到函数声明并从 setTimeout 函数中删除括号,则代码应该可以工作:

function onPressEnter() {
    setTimeout(onPressEnter, 5000);
    console.log('enter pressed');
}
onPressEnter();  // start the timeout loop going

尝试将其添加到匿名函数中。

onPressEnter() {
  setTimeout(function() {
    onPressEnter()
  }, 5000); 
  //////Redirecting
  changePage("Error");
}

相关内容

  • 没有找到相关文章

最新更新