【发布时间】:2019-04-17 10:40:26
【问题描述】:
在我的 React-native 项目中,我使用了一个堆栈导航来设置屏幕导航的流程。为此,我创建了一个 HomeScreen.js 类,这是该类的代码-
主屏幕
import { createAppContainer } from 'react-navigation'
class HomeScreen extends React.Component {
state = {
getValue: null,
}
async componentDidMount() {
const token = await AsyncStorage.getItem('token');
this.setState({ getValue: token });
}
render() {
if(this.state.getValue !== null) {
return (
<AppStackNavigator/>
);
}
}
}
const AppStackNavigator = createAppContainer(createStackNavigator({
LoginScreen: {screen:LoginScreen},
NoteMeDrawer: {screen:NoteMeDrawer,
navigationOptions: {
header:null // this will do your task
}
},
WelcomeScreen: {screen:WelcomeScreen},
NoteMeHome: {screen:NoteMeHome},
SettingsScreen: {screen:SettingsScreen},
UpdateNotes: {screen:UpdateNotes},
AllNotes: {screen:AllNotes},
},
{
initialRouteName: 'LoginScreen'
}
))
export default HomeScreen;
在我的启动屏幕(LoginScreen)中,成功响应后,我将使用以下代码启动抽屉导航屏幕 NoteMeDrawer-
this.props.navigation.navigate('NoteMeDrawer');
在抽屉导航类中,我已经启动了所有我想要作为抽屉项目的必要类。
这是我的 NoteMeDrawer 类的代码-
NoteMedrawer.js
class NavigationDrawerStructure extends React.Component {
static navigationOptions = {
header: null ,
};
toggleDrawer = () => {
this.props.navigationProps.toggleDrawer();
};
render() {
return (
<View style={{ flexDirection: 'row' }}>
<TouchableOpacity onPress={this.toggleDrawer.bind(this)}>
{/*Donute Button Image */}
<Icon name='menu'/>
</TouchableOpacity>
</View>
);
}
}
const FirstActivity_StackNavigator = createStackNavigator({
First: {
screen: NoteMeHome,
navigationOptions: ({ navigation }) => ({
title: 'Home',
headerLeft: <NavigationDrawerStructure navigationProps={navigation} />,
headerStyle: {
backgroundColor: '#FF9800',
},
headerTintColor: '#fff',
}),
},
ScreenInternal: {
screen: ScreenInternal,
navigationOptions: ({ navigation }) => ({
title: 'Screen With Navigation Drawer',
headerLeft: <NavigationDrawerStructure navigationProps={navigation} />,
headerStyle: {
backgroundColor: '#FF9800',
},
headerTintColor: '#fff',
}),
},
});
const Screen2_StackNavigator = createStackNavigator({
Second: {
screen: MakeNote,
navigationOptions: ({ navigation }) => ({
title: 'Create Note',
headerLeft: <NavigationDrawerStructure navigationProps={navigation} />,
headerStyle: {
backgroundColor: '#FF9800',
},
headerTintColor: '#fff',
}),
},
});
const Screen3_StackNavigator = createStackNavigator({
Third: {
screen: AllNotes,
navigationOptions: ({ navigation }) => ({
title: 'All Notes',
headerLeft: <NavigationDrawerStructure navigationProps={navigation} />,
headerStyle: {
backgroundColor: '#FF9800',
},
headerTintColor: '#fff',
}),
},
});
const Drawer = createDrawerNavigator({
Screen1: {
screen: FirstActivity_StackNavigator,
navigationOptions: {
drawerLabel: 'Home',
drawerIcon: (
<Icon name='home' size={25}
/>
)
},
},
Screen2: {
screen: Screen2_StackNavigator,
navigationOptions: {
drawerLabel: 'Create Note',
drawerIcon: (
<Image source={require('../assets/icon_create_note.png')}
style={{height:25, width:25,}}
/>
)
},
},
Screen3: {
screen: Screen3_StackNavigator,
navigationOptions: {
drawerLabel: 'All Notes',
drawerIcon: (
<Image source={require('../assets/icon_all_notes.png')}
style={{height:25, width:25,}}
/>
)
},
},
});
const DrawerNavigatorExample = createStackNavigator({
Drawer: { screen: Drawer, navigationOptions: { header: null } },
DetailsNote: {
screen: DetailsNote,
navigationOptions: { title: 'Details Note' },
},
UpdateNotes: {
screen: UpdateNotes,
navigationOptions: { title: 'Update Note' },
},
});
export default createAppContainer(DrawerNavigatorExample);
这是我的抽屉物品外观的屏幕截图-
现在,我想要在 "Log Out" 下再添加一个抽屉项目 按下该用户后将返回 LoginScreen.js 类。
所以,我不知道该怎么做。如果有人建议我这样做,那就太好了。
【问题讨论】: