我有两个文件,一个data_in1=a.pnh
data_in2=bb.pop
data_in3=c c.oiu
data_in4=_dd.pnh
data_in5=e_e.pop
data_in6=ff_.oiu
data_out1=1
data_out2=22
data_out3=333
data_out4=4444
data_out5=55555
data_out6=666666
,我在其中设置了我的React Navigation StackNavigator和我的firebase实例以及我登录用户的App.js
。
我正在尝试检测用户是否已登录(通过firebase持久登录)但由于某种原因,Login.js
Login.js
中未检测到我的firebase实例。这对我来说没有意义,因为在componentDidMount()
的其他地方,我在我的firebase实例上调用了fxns,就像登录Google一样。
我应该如何安排firebase初始化/ auth检查以确保正确检测firebase实例以及持久性身份验证?
我已经看过这个question但是这个人似乎有一个不同的问题,因为他们只关心单个文件中的firebase实例。
Login.js
App.js
import { StackNavigator } from 'react-navigation';
import * as firebase from 'firebase';
import 'firebase/firestore';
import Login from './components/login';
const Application = StackNavigator({
Login: { screen: Login,
navigationOptions: {
title: 'Login',
}
},
SignUp: { screen: SignUp,
navigationOptions: {
title: 'Signup',
}
},
Home: { screen: Home,
navigationOptions: {
title: 'Home'
}
},
});
const firebaseConfig = {
apiKey: "APIKEY",
authDomain: "AUTH_DOMAIN",
databaseURL: "DATABASE_URL",
projectId: "PROJECT_ID",
storageBucket: "BUCKET",
}
export default class App extends React.Component {
componentDidMount(){
//if no instance exists, initialize one
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig);
}
}
render() {
return (
<Application/>
);
}
}
Login.js
答案 0 :(得分:1)
正如我在上面的评论中所提到的,子组件在他们的父母之前安装。您的登录组件的componentDidMount
发生在应用的componentDidMount
之前。 Stack overflow question outlining the deets.
只是快速搜索,看起来大多数人在他们的组件之外firebase.initializeApp
。 Was just reading this