Привет, я пытаюсь вернуть состояние, если пользователь доступен или нет внутри компонента.
То, что я пытаюсь сделать, это return true
, если пользователь вошел в систему else false
Я использую метод, предоставленный базой огня, чтобы отслеживать состояние пользователя, вошедшего в систему.
firebase.auth().onAuthStateChanged
Вот мой код для этого.
const isLoggedIn = firebase.auth().onAuthStateChanged(user => {
console.info(!!user)
return !!user;
});
const showSaveTheProgressButton:boolean = isLoggedIn;
Но когда я пытаюсь вернуть логическое значение из этого метода, я получаю что-то другое, а не логическое
Type 'false | Unsubscribe' is not assignable to type 'boolean'.
Выше приведено сообщение об ошибке, которое я получаю от программы.
Насколько я понимаю, программа не должна возвращаться Unsubscribe
правильно
Вы неправильно используете onAuthStateChanged
. Он не вернет значение, которое вы возвращаете внутри своего обратного вызова. Он всегда немедленно возвращается с функцией отмены подписки, независимо от того, что делает функция, которую вы ей передали. Вы должны использовать обратный вызов, чтобы выполнять действия над состоянием пользователя всякий раз, когда оно изменяется между входом в систему и выходом из нее.
Если вам нужен текущий пользовательский объект немедленно (если пользователь вошел в систему), просто используйте firebase.auth().currentUser
. Однако вы должны знать, что это всегда будет возвращать значение null сразу после загрузки страницы. Вы должны использовать onAuthStateChanged
, чтобы узнать, когда пользовательский объект впервые становится доступным, это то, что вы пытаетесь узнать.