У меня есть BottomTabNavigator, который содержит еще один BottomTabNavigator и два DrawerNavigator.
Один из DrawerNavigators представляет состояние аутентификации.Я только что реализовал кнопку выхода из системы в этом окне навигации.Кнопка очищает состояние избыточности и перемещается к BottomTabNavigator, более конкретно, к маршруту входа в систему навигатора приветствия.
Однако, как только в окне приветствия Navigato после выхода из системы, аутентифицированный ящик отображается при попытке навигации.на другой маршрут BottomTabNavigator.
Я не уверен, почему это происходит.Когда я обновляю проект expo, я понимаю, что приложение действительно находится в состоянии без проверки подлинности.
Есть ли способ убедиться, что Authenticated Drawer Navigator не отображается при выходе из системы?
Вот мой главный навигатор:
import React, { Component } from 'react';
import {
AppRegistry,
View,
SafeAreaView,
Button,
AsyncStorage,
TouchableOpacity,
Text,
} from 'react-native';
import { Ionicons } from '@expo/vector-icons';
import { PersistGate } from 'redux-persist/integration/react';
import {
createBottomTabNavigator,
createSwitchNavigator,
createDrawerNavigator,
createStackNavigator,
DrawerItems,
} from 'react-navigation';
import { Provider } from 'react-redux';
import Welcome from './screens/Welcome';
import Register from './screens/RegisterScreen';
import Login from './screens/LoginScreen';
import Home from './screens/Home';
import Events from './screens/Events';
import Board from './screens/Board';
import HomePage from './screens/HomePage';
import SettingsScreen from './screens/BusinessSettings';
import BusinessEvents from './screens/BusinessEvents';
import EventListings from './screens/EventListings';
import BusinessListings from './screens/BusinessListings';
import Business from './screens/Business';
import BusinessForm from './screens/BusinessForm';
import EventForm from './screens/EventForm';
import Logout from './screens/Logout';
import { persistor, store } from './store';
const MainNavigator = createBottomTabNavigator(
{
Welcome: createBottomTabNavigator({
Welcome: Welcome,
Login: Login,
Register: Register,
Board: Board,
}),
Home: createDrawerNavigator({
Home: {
screen: Home,
},
Events: {
screen: Events,
},
Business: {
screen: Business
}
}),
HomePage: createDrawerNavigator({
HomePage: {
screen: HomePage,
},
Settings: {
screen: SettingsScreen,
},
EventListings: {
screen: EventListings
},
EventForm: {
screen: EventForm
},
BusinessEvents: {
screen: BusinessEvents
},
BusinessListings: {
screen: BusinessListings
},
NewBusiness: {
screen: BusinessForm
},
Business: {
screen: Business
}
}, {
contentComponent: (props) => (
<View style={{ flex:1 }}>
<SafeAreaView forceInset={{ top: 'always', horizontal: 'never' }}>
<DrawerItems {...props} />
<TouchableOpacity style={{ flexDirection: 'row', marginLeft: '8%', paddingTop: '2%' }} onPress={ async () => {
await AsyncStorage.clear();
await persistor.purge();
props.navigation.navigate("Welcome");
}}>
<Ionicons name="ios-log-out-outline" size={24} color="#053541" /><Text style={{ marginLeft: '14%', fontWeight: 'bold', color: 'black' }}>Log Out</Text>
</TouchableOpacity>
</SafeAreaView>
</View>
),
drawerOpenRoute: 'DrawerOpen',
drawerCloseRoute: 'DrawerClose',
drawerToggleRoute: 'DrawerToggle'
})
},
{
headerMode: 'none',
navigationOptions: {
header: null,
tabBarVisible: false,
headerVisible: false,
headerMode: 'none',
},
tabBarVisible: false,
swipeEnabled: false,
animationEnabled: false,
lazy: true,
transitionConfig: () => ({
transitionSpec: {
duration: 0,
},
}),
/* Other configuration remains unchanged */
}
);
export default class App extends Component {
render() {
return (
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<MainNavigator />
</PersistGate>
</Provider>
);
}
};