我在React Native中有一个加载屏幕组件。每当“身份验证”状态更改时,我都会导航到所需的屏幕。 当用户正在注册时,我将redux状态标记为isRegistering = true。这是因为在使用Firebase完成注册后,我仍然想显示注册完成屏幕,并根据身份验证状态从加载屏幕中阻止自动导航。
问题似乎是,在auth更改时调用事件时,redux状态为空。那是事件,我从调试中知道redux状态之前有数据,事件发生后立即有数据。但是在事件中并在Redux中检查isRegistration时,状态完全为空(重置为默认状态)。
我检查了我所有的动作,reducer等。没有什么叫什么,所说的redux只是在authstatechanged事件发生时进行检查,那时它没有数据,如果数据在此之前它。
componentDidMount() {
firebase.auth().onAuthStateChanged(user => {
if (this.props.userObject.isRegistering === false) {
this.props.navigation.navigate(user ? 'MainScreen' : 'LandingPage')
}
})
}
const mapStateToProps = (state) => {
return {
userObject: state.user
}
}
答案 0 :(得分:0)
尝试一下
componentDidMount() {
var that = this;
firebase.auth().onAuthStateChanged(user => {
if (that.props.userObject.isRegistering === false) {
that.props.navigation.navigate(user ? 'MainScreen' : 'LandingPage')
}
})
}