我正在使用 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");
}