Как выполнить функцию при переходе от компонента?

#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. Спасибо, и как я могу заставить снова выполнить интервал, когда я вернусь из навигации?