0

我一直卡住自3天這個問題。我最近將我的應用程序遷移到Firebase和React Native,除了用戶身份驗證之外,一切都像魅力一樣工作。我想觸發我的導航在用戶登錄時,在所以我使用下面的方法:React Native | Firebase身份驗證|不可能觸發導航器

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»之外,它就可以工作。我不知道我現在能做什麼。有沒有比使用導航儀更好的解決方案?

回答

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

+0

解決了我的問題!謝謝 –