如何在 React Native 中等待来自 firebase 身份验证的持久用户

Sch*_*yer 6 javascript firebase react-native firebase-authentication expo

我在我的 React Native 应用程序中使用 firebase auth(通过 expo),身份验证通过观察者(包括持久用户)工作正常:

import firebase from "firebase";

firebase.auth().onAuthStateChanged(user => {
    if (user) {
        this.props.setUser(user);
    }
}).bind(this);
Run Code Online (Sandbox Code Playgroud)

我显示一个带有登录/注册的登陆屏幕,如果用户使用帐户登录,我将转发到主应用程序。应用程序启动后,加载持久用户时需要一段时间才能触发onAuthStateChanged方法,这导致我的应用程序短暂显示此登陆屏幕,然后导航离开。我希望有一个加载屏幕,直到正确确定身份验证状态。

但是,如果没有持久用户,则 onAuthStateChanged 永远不会触发,因此我没有要等待的特定事件。我可以使用超时计时器,但这似乎是一个糟糕的解决方案,因为必要的等待时间可能会根据硬件和连接速度而有很大差异。

如何正确解决这个问题,即我如何知道没有持久用户?

Quo*_*oon 2

当用户不坚持时Firebase错误块

var isLoading = true;

   firebase.auth().onAuthStateChanged(user => {
        if (user) {
            isLoading = false;
            this.props.setUser(user);
        }
    }, error => {
       isLoading = false;
   }
}).bind(this);
Run Code Online (Sandbox Code Playgroud)