React Native | Firebase身份验证|无法触发导航器

时间:2016-07-25 14:30:08

标签: authentication firebase react-native firebase-authentication

我因为这个问题已经被困3天了。我最近将我的应用程序迁移到了Firebase和React Native,除了用户身份验证之外,一切都像魅力一样。我试图在用户登录时触发我的导航器。所以我使用以下方法:

componentDidMount() {
    firebase.auth().onAuthStateChanged(function(user) {
     if (user) {
        global.userID = user.uid
        alert(‘test’)        

        var naviRef = this.refs.NavRef
        naviRef.push({
          ident: ‘Home’
        })
    } else {
      // No user is signed in.
    }
 });
}

我收到警报('测试'),但我的导航器什么也没做。如果我把naviRef.push放在«onAuthStateChanged»之外它就可以了。我不知道我现在能做什么。有没有比使用导航仪更好的解决方案?

1 个答案:

答案 0 :(得分:2)

我认为这应该可以解决问题:

componentDidMount() {
    firebase.auth().onAuthStateChanged((user) => {
     if (user) {
        global.userID = user.uid
        alert(‘test’)        

        var naviRef = this.refs.NavRef
        naviRef.push({
          ident: ‘Home’
        })
    } else {
      // No user is signed in.
    }
 });
}

现在函数内的this是正确的,因为箭头函数对此进行词法绑定。因此,您可以正确访问this.refs.NavRef