Как работает firebase onAuthStateChanged в жизненном цикле ComponentDidMount в reactJS

Может ли кто-нибудь объяснить, как эта функция onAuthStateChanged работает внутри componentDidMount. Я знаю, что этот хук жизненного цикла выполняется только один раз, когда компонент монтируется. Так как же выполняется функция внутри?

Я предполагаю, что это похоже на функцию обратного вызова, которая продолжает работать в цикле событий, поскольку срабатывает при изменении состояния, например addEventlistner в JS.

componentDidMount() {
    console.info("Context Mounted");
    firebaseapp.auth().onAuthStateChanged((user) => {
      if (user) {
        this.setState({ currentUser: user });
        console.info("User Signed IN ");
      } else {
        console.info("THERE IS NO USER");
      }
    });
  }

Функция наблюдателя состояния авторизации, которую вы передаете onAuthStateChanged, будет вызываться всякий раз, когда изменяется состояние аутентификации пользователя, пока вы не удалите этого наблюдателя. Если вы наблюдаете что-то другое, объясните, что вы делаете и что работает не так, как вы ожидаете.

Doug Stevenson 11.12.2020 20:51

Я просто пытался понять, как работает componentDidMount. Даже после того, как он выполняется один раз, но функция внутри этого хука выполняется снова. так что я предполагаю, что функция внутри регистрируется внутри цикла событий обратного вызова и выполняется, когда пользователь регистрируется

Amar 11.12.2020 21:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
2
1 223
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы в значительной степени поняли суть: после того, как вы зарегистрируете свой обратный вызов onAuthStateChanged в Firebase, он будет называться:

  1. "немедленно" с текущим состоянием аутентификации
  2. всякий раз, когда это состояние аутентификации изменяется

Поскольку вы вызываете setState, чтобы поместить пользователя в состояние, это вызывает повторную визуализацию пользовательского интерфейса всякий раз, когда происходит одно из вышеуказанных событий.

Это продолжается до тех пор, пока приложение не закроется или пока вы не отмените регистрацию прослушивателя, что обычно следует делать в методе componentWillUnmount того же компонента.

Спасибо за ваш замечательный ответ. Так что я был прав! Эта функция внутри регистрируется внутри цикла событий обратного вызова, точно так же, как addEventListner в ванильном JavaScript.

Amar 11.12.2020 21:05

Другие вопросы по теме