Мне удалось получить доступ к объекту навигации, создав два отдельных стека навигации. Один для зарегистрированных маршрутов, а другой для входа в систему, как показано ниже:
const MainStack = createStackNavigator(
{
Home: { screen: TabStack },
User: { screen: UserProfile },
Comments: { screen: Comments },
Post: { screen: Post }
},
{
initialRouteName: 'Home',
mode: 'modal',
headerMode: 'none'
}
)
const LoginStack = createStackNavigator(
{
Auth: { screen: SignIn }
},
{
initialRouteName: 'Auth',
mode: 'modal',
headerMode: 'none'
}
)
const AppContainer = createAppContainer(MainStack);
const LoginContainer = createAppContainer(LoginStack);
И в методе рендеринга я использовал screenProps
для обеспечения навигационной поддержки:
render() {
console.log(this.state.userId)
return (this.state.isLoggedIn?(<ApolloProvider client={client}>
<AppContainer screenProps={{client,onLogout:this.onLogOut,loginId:this.state.userId}}/>
</ApolloProvider>)
:(
<ApolloProvider client={client}>
<LoginContainer screenProps={{client,onLogin:this.onLogin,loginId:this.state.userId}} />
</ApolloProvider>
))
}