在DrawerNavigator中反应本机注销

时间:2020-04-18 13:12:20

标签: javascript react-native react-navigation-drawer

我正在尝试在我的本机抽屉导航器中执行注销功能。但是我不知道该怎么做。我将令牌存储在asyncstorage中,我需要注销并同时清除asyncstorage。 这是我的代码,有人知道吗?

const Drawer = createDrawerNavigator();
const Stack = createStackNavigator();
export default class SideMenu extends Component   {

  render(){
    createHomeStack = () => 
    <Stack.Navigator>
      <Stack.Screen name="Upcoming Activities" component={HomeScreen} 
        options={{
        headerStyle: {backgroundColor: '#87CEFA',},
        headerTintColor: '#fff',
        headerTitleStyle: {fontWeight: 'bold',}
        }} />
      <Stack.Screen name="Details" component={DetailsScreen}
        options={{headerStyle: {backgroundColor: '#87CEFA',},
        headerTintColor: '#fff',
        headerTitleStyle: {fontWeight: 'bold',}
        }}/>
    </Stack.Navigator>

    createYourStack = () => 
    <Stack.Navigator>
      <Stack.Screen name="Your Activities" component={YourActivitiesScreen} 
        options={{
        headerStyle: {backgroundColor: '#87CEFA',},
        headerTintColor: '#fff',
        headerTitleStyle: {fontWeight: 'bold',}
        }} />
      <Stack.Screen name="Details" component={DetailsScreen}
        options={{headerStyle: {backgroundColor: '#87CEFA',},
        headerTintColor: '#fff',
        headerTitleStyle: {fontWeight: 'bold',}
        }}/>
    </Stack.Navigator>

    return (
      <NavigationContainer>
        <Drawer.Navigator initialRouteName="Home">
          <Drawer.Screen 
            name="Home"
            children={createHomeStack}
            options={{ drawerLabel: 'Home' }}
          />
          <Drawer.Screen
            name="Your Activities"
            children={createYourStack}
            options={{ drawerLabel: 'Your Activities' }}
          />
          <Drawer.Screen
            name="Logout"
            //component={}
            options={{ drawerLabel: 'Logout' }}
          />
        </Drawer.Navigator>
      </NavigationContainer>
    )

  }
}

更新问题:我需要在抽屉式导航器中按注销时将其定向到登录名,但是我的登录屏幕使用的是来自“ react-native-router-flux”的路由器

export default class Routes extends Component {
    render() {
        return(
            <Router>
                <Stack key="root" hideNavBar>
                    <Scene key="login" component={Login} title="Login" initial/>
                    <Scene key="signup" component={Signup} title="Signup" />
                    <Scene key="home" component={SideMenu} title="HomeScreen" />
                </Stack>
            </Router>
        );
    }
}

1 个答案:

答案 0 :(得分:1)

您可以在“注销”屏幕中执行以下操作:

import React, { Component } from "react";
import { View } from "react-native";
import { AsyncStorage } from 'react-native';

class LogoutScreen extends Component{
    componentDidMount(){
        AsyncStorage.removeItem("yourKey");
        this.props.navigation.navigate('RouteName eg:Home');
    }
    render(){
        return(
         <View style={{alignItems:'center',justifyContent:'center',flex:1}}>
         </View>
        );
    }
}
export default LogoutScreen;

希望这会有所帮助!