使用firebase

时间:2017-07-05 22:46:17

标签: reactjs react-native

我很反应和反应原生世界。我创建了一个新的应用程序,它使用具有登录屏幕的firebase,用户可以注册电子邮件和密码。我想检查用户是否已经注册并相应地重定向到另一个屏幕,作为我使用构造函数和onAuthStateChanged的第一步,我想设置一个状态。但我总是得到功能没有定义,任何人都可以帮助我。

constructor(props) {
        super(props);

        firebase.initializeApp(FireBaseConfig);

        this.state = {
            currentUser: null,
            emailAddress: '',
            password: '',
            loginError: {
                show: false,
                message: "Unknown error"
            }
        }

        this.saveCurrentUser = this.saveCurrentUser.bind(this);
        this.doLogin = this.doLogin.bind(this);

        firebase.auth().onAuthStateChanged(function (user) {
            saveCurrentUser(user);
        });
    }

    saveCurrentUser(user) {
        this.setState({
            currentUser: user
        });
    }

enter image description here

由于

1 个答案:

答案 0 :(得分:2)

saveCurrentUser确实没有定义。您可以在this关键字下访问它,该关键字是您班级的参考。 但是因为你在firebase调用上使用常规函数回调,所以你必须先引用它。这就是我添加的原因

var saveCurrentUser = this.saveCurrentUser

constructor(props) {
    super(props);

    firebase.initializeApp(FireBaseConfig);

    this.state = {
        currentUser: null,
        emailAddress: '',
        password: '',
        loginError: {
            show: false,
            message: "Unknown error"
        }
    }

    this.saveCurrentUser = this.saveCurrentUser.bind(this);
    this.doLogin = this.doLogin.bind(this);

    var saveCurrentUser = this.saveCurrentUser

    firebase.auth().onAuthStateChanged(function (user) {
        saveCurrentUser(user);
    });
}

saveCurrentUser(user) {
    this.setState({
        currentUser: user
    });
}

您可以使用箭头功能,因此var声明将变得不必要。