Знать, когда пользователь покидает компонент — Реагировать

#reactjs #firebase #redux #react-redux

#reactjs #firebase #redux #реагировать-redux

Вопрос:

Я создаю приложение, которое использует React, Redux, Firebase и функцию onSnapshot(). Я читал, что для снижения затрат и обновления сервера рекомендуется отказаться от подписки на onSnapshot, когда пользователь покидает компонент.

Итак, мой вопрос: как я могу узнать, когда пользователь покидает компонент или путь в react, чтобы отменить запись onSnapshot?

Спасибо!

Ответ №1:

В компоненте класса React используйте componentDidMount и componentWillUnmount для добавления и удаления прослушивателей или подписок:

 class MyComponent extends React.Component {
  componentDidMount() {
    // Add listeners, subscriptions, etc.
  }

  componentWillUnmount() {
    // Remove listeners, subscriptions, etc.
  }

  render() {
    ...
  }
}
  

В компоненте функции React используйте useEffect перехват, чтобы сделать то же самое. Обязательно добавьте соответствующие зависимости в useEffect массив зависимостей (второй аргумент).

 const MyComponent = (props) => {
  useEffect(() => {
    // Add listeners, subscriptions, etc.

    return () => {
      // This function will be called just before the component unmounts.
      // Remove listeners, subscriptions, etc.       
    };
  }, [/* Dependency array */]);

  return (...);
};
  

Ответ №2:

 componentWillUnmount() { // your Code here }
  

«Этот метод вызывается, когда компонент удаляется из DOM» (из: https://reactjs.org/docs/react-component.html ). Надеюсь, это то, что вы искали.