Откуда берется тип Отписаться?

Привет, я пытаюсь вернуть состояние, если пользователь доступен или нет внутри компонента. То, что я пытаюсь сделать, это 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 правильно

Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
0
0
161
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

Если вам нужен текущий пользовательский объект немедленно (если пользователь вошел в систему), просто используйте firebase.auth().currentUser. Однако вы должны знать, что это всегда будет возвращать значение null сразу после загрузки страницы. Вы должны использовать onAuthStateChanged, чтобы узнать, когда пользовательский объект впервые становится доступным, это то, что вы пытаетесь узнать.

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