Может ли кто-нибудь объяснить, как эта функция 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");
}
});
}
Я просто пытался понять, как работает componentDidMount. Даже после того, как он выполняется один раз, но функция внутри этого хука выполняется снова. так что я предполагаю, что функция внутри регистрируется внутри цикла событий обратного вызова и выполняется, когда пользователь регистрируется





Вы в значительной степени поняли суть: после того, как вы зарегистрируете свой обратный вызов onAuthStateChanged в Firebase, он будет называться:
Поскольку вы вызываете setState, чтобы поместить пользователя в состояние, это вызывает повторную визуализацию пользовательского интерфейса всякий раз, когда происходит одно из вышеуказанных событий.
Это продолжается до тех пор, пока приложение не закроется или пока вы не отмените регистрацию прослушивателя, что обычно следует делать в методе componentWillUnmount того же компонента.
Спасибо за ваш замечательный ответ. Так что я был прав! Эта функция внутри регистрируется внутри цикла событий обратного вызова, точно так же, как addEventListner в ванильном JavaScript.
Функция наблюдателя состояния авторизации, которую вы передаете
onAuthStateChanged, будет вызываться всякий раз, когда изменяется состояние аутентификации пользователя, пока вы не удалите этого наблюдателя. Если вы наблюдаете что-то другое, объясните, что вы делаете и что работает не так, как вы ожидаете.