У меня есть все мои стеки в моем AppNavigator , расположенном в моем файле маршрутов. js, и я передаю его в свой основной файл Приложение. js, я просто хочу, чтобы пользователь go прямо в стек 'Home' , если он уже аутентифицирован (isAuthenticated: true
). Может кто-то мне помочь, пожалуйста? Другие решения этой проблемы приветствуются! Можно ли изменить значение isAuthenticated
на моей странице входа и выполнить там навигацию? если да, то как?
Мой текущий код:
маршруты. js
const AppNavigator = createSwitchNavigator({
Auth: AuthenticationNavigator,
Home: MainNavigator,
}, {
initialRouteName: 'Auth'}
);
const AppContainer = createAppContainer(AppNavigator);
export default AppContainer
Приложение. js
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
isAuthenticationReady: false,
isAuthenticated: true,
test: true,
};
// Iniciando firebase... source: https://www.youtube.com/watch?v=pNZks2j2Qaw
if (!firebase.apps.length) { firebase.initializeApp(ApiKeys.FirebaseConfig); }
firebase.auth().onAuthStateChanged(this.onAuthStateChanged);
}
onAuthStateChanged = (user) => { //Funcao chamada toda vez que ha uma mundança login/logout
this.setState({isAuthenticationReady: true}); //avisa que autenticaçao foi feita
this.setState({isAuthenticated: !!user}); //se o user for 'null' e pq ta deslogado, senao, ta logado
}
render() {
if (!this.state.isAuthenticationReady) {
return (
<>
<AppContainer /> //this part i will do later
</>
);
} else {
return (
<>
<StatusBar barStyle="light-content" backgroundColor="#121212" />
{this.state.isAuthenticated ? ( this.props.navigation.navigate("Main") ) : ( this.props.navigation.navigate("Main") ) }
</>
);
}
}
}
Вот проблема:
{this.state.isAuthenticated ? ( <AppContainer /> ) : ( <AppContainer /> ) }
где <AppContainer />
я буду sh это было this.props.navigation.navigate()
, но это не сработает