#reactjs #react-native
#reactjs #react-native
Вопрос:
Я хочу выполнить функцию, когда пользователь переходит на другой экран… Я попытался выполнить его внутри componentWillUnmount
, но компонент не unmount
включается navigation.navigate
intervalId = 0;
componentDidMount() {
const me = this;
//alert(JSON.stringify(me.props.navigation));
alert(route.name);
this.intervalId = setInterval(() => {
//if (this.props.navigation.state.routeName==)
//this.getOrders();
}, 3000);
//alert("llamada");
}
componentWillUnmount() {
//alert("CAMBIANDO");
clearInterval(this.intervalId);
}
Комментарии:
1. Какую функцию вы хотите выполнить в componentWillUnmount? … Вы имеете в виду, что хотите отключить компонент после перехода к другому компоненту?
2. clearInterval(this.intervalId). Я хочу очистить интервал, но когда я ставлю точку на навигации, «componentWillUnmount» не выполняется
Ответ №1:
Вам нужно остановить таймер, когда 1. И componentWillUnmount
2. Компонент теряет фокус ( didBlur
событие)
и когда ваш компонент снова получит фокус ( didFocus
событие), вы можете снова включить свой timer
import { NavigationEvents } from 'react-navigation';
<NavigationEvents
onDidBlur={() => {
clearInterval(this.intervalId);
}}
onDidFocus={() => {
/** Re-enable timer here */
this.intervalId = setInterval(() => {...
}}
/>
Комментарии:
1. Спасибо, и как я могу заставить снова выполнить интервал, когда я вернусь из навигации?