React Native :应用程序关闭时是否有回调函数?

f4t66c6m  于 2022-11-17  发布在  React
关注(0)|答案(3)|浏览(246)

我有一个setInterval,即使您关闭(而不是退出)应用程序,它也会保持运行。我希望在关闭应用程序或将设备置于睡眠状态时调用一个函数,以便它清除setInterval。

syqv5f0l

syqv5f0l1#

AppState是您的朋友!请查看documentation of AppState
因此,在存在setTimeout的组件中,只需要AppState并添加一个事件侦听器,如下所示:

AppState.addEventListener('background', this.handlePutAppToBackground);
AppState.addEventListener('inactive', this.handlePutAppToBackground);

handlePutAppToBackground()现在将成为组件中的一个方法,您可以在其中调用clearTimeout(...)

htrmnn0y

htrmnn0y2#

答案其实是

AppState.addEventListener('change', state => {
  if (state === 'active') {
    // do this
  } else if (state === 'background') {
    // do that
  } else if (state === 'inactive') {
    // do that other thing
  }
});
myzjeezk

myzjeezk3#

我通过添加useEffect()解决了这个问题,它不依赖于组件,当组件因任何原因卸载时,我希望在组件中发出某个事件,并在清理函数中发出所需的函数。

useEffect(() => {
 return () => {
  The desired function
 }
})

相关问题