我在 React Native 中有一个加载屏幕组件。每当身份验证状态发生变化时,我都会导航到所需的屏幕。 当用户正在进行注册时,我将 redux 状态标记为 isRegistering = true。这是因为在 Firebase 注册完成后,我仍然想显示注册完成屏幕并根据身份验证状态推迟加载屏幕的自动导航。
问题似乎是当在身份验证更改时调用事件时,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
}
}
最佳答案
试试这个,
componentDidMount() {
var that = this;
firebase.auth().onAuthStateChanged(user => {
if (that.props.userObject.isRegistering === false) {
that.props.navigation.navigate(user ? 'MainScreen' : 'LandingPage')
}
})
}
关于javascript - Firebase onAuthStateChanged 和 Redux 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55786606/