首页 > 解决方案 > Unsubscribe 类型从何而来?

问题描述

嗨,如果用户在组件内可用或不在,我正在尝试返回状态。我想要做的是return true如果用户登录else false

我正在使用 fire base 提供的方法来跟踪用户的登录状态

firebase.auth().onAuthStateChanged

这是我的代码。

const isLoggedIn = firebase.auth().onAuthStateChanged(user => {
    console.log(!!user)
    return !!user;
  });

  const showSaveTheProgressButton:boolean = isLoggedIn;

但是当我尝试从这个方法返回布尔值时,我得到的是别的东西而不是布尔值

Type 'false | Unsubscribe' is not assignable to type 'boolean'.

以上是我从程序中得到的错误声明。据我了解,该程序不应该Unsubscribe正确返回

标签: typescriptfirebasefirebase-authentication

解决方案


你没有onAuthStateChanged正确使用。它不会返回您在其回调中返回的值。无论您传递给它的函数做什么,它总是立即返回一个取消订阅函数。每当登录和注销之间发生变化时,您应该使用回调对用户的状态采取行动。

如果您想要立即获取当前用户对象(如果有用户登录),那么只需使用firebase.auth().currentUser. 但是,您应该知道,当页面加载时,它总是会立即返回 null。您应该onAuthStateChanged知道用户对象何时首次可用,这就是您想要知道的。


推荐阅读