我有一个setInterval,即使您关闭(而不是退出)应用程序,它也会保持运行。我希望在关闭应用程序或将设备置于睡眠状态时调用一个函数,以便它清除setInterval。
syqv5f0l1#
AppState是您的朋友!请查看documentation of AppState。因此,在存在setTimeout的组件中,只需要AppState并添加一个事件侦听器,如下所示:
AppState.addEventListener('background', this.handlePutAppToBackground); AppState.addEventListener('inactive', this.handlePutAppToBackground);
handlePutAppToBackground()现在将成为组件中的一个方法,您可以在其中调用clearTimeout(...)
htrmnn0y2#
答案其实是
AppState.addEventListener('change', state => { if (state === 'active') { // do this } else if (state === 'background') { // do that } else if (state === 'inactive') { // do that other thing } });
myzjeezk3#
我通过添加useEffect()解决了这个问题,它不依赖于组件,当组件因任何原因卸载时,我希望在组件中发出某个事件,并在清理函数中发出所需的函数。
useEffect(() => { return () => { The desired function } })
3条答案
按热度按时间syqv5f0l1#
AppState是您的朋友!请查看documentation of AppState。
因此,在存在setTimeout的组件中,只需要AppState并添加一个事件侦听器,如下所示:
handlePutAppToBackground()现在将成为组件中的一个方法,您可以在其中调用clearTimeout(...)
htrmnn0y2#
答案其实是
myzjeezk3#
我通过添加useEffect()解决了这个问题,它不依赖于组件,当组件因任何原因卸载时,我希望在组件中发出某个事件,并在清理函数中发出所需的函数。