Таким образом, у меня есть SwitchNavigator, который используется внутри функции, которая получает в качестве значения значение (загрузка true или false).Я хочу изменить опору этой функции на основе firebase onAuthStateChange, поэтому, если я не получил ответ, я отображаю счетчик, если я его получаю, я изменяю состояние и использую его как функцию, но сейчас это не работает, так как componentDidMount не ждетдля ответа от функции firebase!Есть идеи?
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { createStackNavigator, SwitchNavigator } from 'react-navigation';
import MainScreen from './MainScreen';
import AuthenticationNav from './Authentication';
import firebase from 'firebase';
import SplashScreen from './SplashScreen';
export default class App extends React.Component {
constructor(){
super();
this.state={
screen:'loading'
}
}
componentWillMount() {
}
componentDidMount(){
let isItTrue
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
isItTrue=true;
} else {
isItTrue=false
}
});
this.setState({screen:isItTrue})
}
render() {console.log(this.state)
const App=app(this.state.screen)
return (
<View style={{ flex: 1 }}>
<App />
</View>
);
}
}
const Main = createStackNavigator({
Main: {
screen: MainScreen
}
})
const Authentication = createStackNavigator({
AuthenticationScreen: {
screen: AuthenticationNav
}
}, {
headerMode: 'screen'
})
const Splash = createStackNavigator({
SplashScreen: {
screen: SplashScreen
}
})
const app = (isSignedIn) => {
return SwitchNavigator({
SignedIn: {
screen: Main
},
SignedOut: {
screen: Authentication
},
Loading:{
screen:Splash
}
},
{
initialRouteName: isSignedIn==='loading' ? "Loading" : isSignedIn?"SignedIn":"SignedOut"
}
)
}