Для проверки бездействия и выполнения некоторых функций я использую реагировать-родного-взаимодействия-провайдера. Выполнение показано ниже на родительском экране.
render() {
return (
<InteractionProvider
timeout = {AppConfigurations.appInactivityTimeThreshold * 1000}
onActive = {() => this.onNotIdle()}
onInactive = {() => this.onIdle()}
>
<View style = {styles.mainContainer}>
/..
</View>
</InteractionProvider>
);
}
onIdle() {
console.info("MAIN IDLE!");
this.idleWarningModal.showModal();
}
onNotIdle() {
console.info("MAIN NOT IDLE!");
}
Это прекрасно работает. Проблема возникает, когда вы переходите к другому представлению и возвращаетесь к этому родительскому представлению, таймер, кажется, не останавливается, и если порог времени был достигнут, метод onIdle запускается, как только вы вернетесь к родительскому экрану.
Как этого избежать? Спасибо.
@Margon Спасибо. Посмотрим на это.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В конце концов, я сам использовал PanResponder, чтобы проверить наличие касаний в каждом компоненте. И при переходе к дочернему представлению PanResponder родительского представления передается как prop и устанавливается в компонент View дочернего представления вместе с его собственным PanResponder.
Бывший:
render() {
return (
<View style = {styles.mainContainer}
collapsable = {false}
{...this.props.mainPagePanResponder.panHandlers}
{...this.childPagePanResponder.panHandlers}>
//Child Content
</View>
);
}
Не самое сложное исправление, но в моем случае работает.
Привет, я столкнулся с той же проблемой, используя эту библиотеку github.com/jkomyno/react-native-user-inactivity, не смог остановить таймер бездействия родителей при переходе на другой экран. Несколько экранов неактивны, когда мы продолжаем нажимать в стеке навигации. Хорошо ли работают Panresponders с реквизитом для ребенка?
Это просто идея, но вы могли бы использовать сервисный работник? Это может вам помочь ... но это чистый js и не реагирует