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));