我因为这个问题已经被困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»之外它就可以了。我不知道我现在能做什么。有没有比使用导航仪更好的解决方案?
答案 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