clearTimeout 不工作 React Native
clearTimeout not working React Natve
我有一个应用程序需要一直保持打开状态。为了阻止 ipad 在 5 小时不活动后关闭 down/sleeping,我让主屏幕每 4 小时重新加载一次。但如果用户正在使用键盘,我不希望它刷新。我有应用程序刷新,但我无法停止我的 keyboardDidShow 侦听器上的计时器。这是我的代码:
componentDidMount(){
this.keyboardDidShowListener =
Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);
this.keyboardDidHideListener =
Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);
this.timeoutHandle = setTimeout(()=>{
this.props.navigation.navigate('Home');
},30000);
}
_keyboardDidShow () {
console.log("Keyboard Shown")
if (this.timeoutHandle) {
clearTimeout(this.timeoutHandle);
this.timeoutHandle = 0;
}
};
componentWillUnmount(){
this.keyboardDidShowListener.remove();
this.keyboardDidHideListener.remove();
clearTimeout(this.timeoutHandle);
}
_keyboardDidHide () {
console.log('Keyboard Hidden');
}
我尝试了多种不同的方法,但无法清除 keyboardDidShow 上的计时器。如果可以,请帮忙。
您的函数在错误的上下文中执行。
这些行:
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);
需要改成这样:
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow.bind(this));
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide.bind(this));
我有一个应用程序需要一直保持打开状态。为了阻止 ipad 在 5 小时不活动后关闭 down/sleeping,我让主屏幕每 4 小时重新加载一次。但如果用户正在使用键盘,我不希望它刷新。我有应用程序刷新,但我无法停止我的 keyboardDidShow 侦听器上的计时器。这是我的代码:
componentDidMount(){
this.keyboardDidShowListener =
Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);
this.keyboardDidHideListener =
Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);
this.timeoutHandle = setTimeout(()=>{
this.props.navigation.navigate('Home');
},30000);
}
_keyboardDidShow () {
console.log("Keyboard Shown")
if (this.timeoutHandle) {
clearTimeout(this.timeoutHandle);
this.timeoutHandle = 0;
}
};
componentWillUnmount(){
this.keyboardDidShowListener.remove();
this.keyboardDidHideListener.remove();
clearTimeout(this.timeoutHandle);
}
_keyboardDidHide () {
console.log('Keyboard Hidden');
}
我尝试了多种不同的方法,但无法清除 keyboardDidShow 上的计时器。如果可以,请帮忙。
您的函数在错误的上下文中执行。
这些行:
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);
需要改成这样:
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow.bind(this));
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide.bind(this));