Reactjs firebase.auth().onAuthStateChanged()返回react native中未定义的

Reactjs firebase.auth().onAuthStateChanged()返回react native中未定义的,reactjs,firebase,react-native,firebase-authentication,Reactjs,Firebase,React Native,Firebase Authentication,在刷新应用程序并之前登录后,我正在尝试获取身份验证状态,但firebase.auth()。onAuthStateChanged()提供了未定义的身份验证。这背后的动机是通过使用身份验证状态导航到主屏幕或登录屏幕 import React, {Component} from 'react'; import {View} from 'react-native'; import firebase from 'firebase'; import {connect} from 'react-redux';

在刷新应用程序并之前登录后,我正在尝试获取身份验证状态,但
firebase.auth()。onAuthStateChanged()
提供了未定义的身份验证。这背后的动机是通过使用身份验证状态导航到主屏幕或登录屏幕

import React, {Component} from 'react';
import {View} from 'react-native';
import firebase from 'firebase';
import {connect} from 'react-redux';
import {Spinner} from '../components/common';

class Switch extends Component {

  componentDidMount() {
    const userData = this.checkUser();
    this.switchContent(userData);
  }
  checkUser = () => {
    firebase.auth().onAuthStateChanged(async (userData) => {
      return userData;
    });
  };
  switchContent(userData) {
    console.log(userData);
    if (userData) {
      return this.props.persistantSignIn();
    }
    return this.props.navigation.push('SignInForm');
  }
  renderComponent() {
    return (
      <View style={{flex: 1}}>
        <Spinner />
      </View>
  }
  render() {
    return <View style={{flex:1}}>{this.renderComponent()}</View>;
  }
}

export default connect(null, {persistantSignIn})(Switch);
import React,{Component}来自'React';
从“react native”导入{View};
从“firebase”导入firebase;
从'react redux'导入{connect};
从“../components/common”导入{Spinner};
类开关扩展组件{
componentDidMount(){
const userData=this.checkUser();
这个.switchContent(userData);
}
checkUser=()=>{
firebase.auth().onAuthStateChanged(异步(用户数据)=>{
返回用户数据;
});
};
switchContent(用户数据){
console.log(userData);
如果(用户数据){
返回此.props.persistantSignIn();
}
返回此.props.navigation.push('signinfo');
}
renderComponent(){
返回(
}
render(){
返回{this.renderComponent()};
}
}
导出默认连接(null,{persistantSignIn})(开关);

应在匿名函数中处理
onAuthStateChanged
(即
用户数据
)的结果。还请注意,在用户登录之前,
用户数据
将为

  componentDidMount() {
    firebase.auth().onAuthStateChanged( (userData) => {
      this.switchContent(userData);
    });
  }
无需在匿名函数中包装
firebase.auth().onAuthStateChanged
,除非您使用
useEffect
,例如:

import { useEffect } from 'react';

...
  useEffect(() => {
    auth.onAuthStateChanged( userData => {
      this.switchContent(userData);
    })
  },[])