React Navigation--DrwaerNavigator 详细的例子
来源:互联网 发布:免费手机组态软件 编辑:程序博客网 时间:2024/04/28 16:54
/** * Created by YiBing on 2017/5/5. * DrawerNavigator:主要和StackNavigator功能差不多,然后多了抽屉功能。 * 本程序效果:有三个页面,每个页面都能打开抽屉,抽屉页面显示的是三个页面的名称, * 每个页面可以跳转,Home->Notifications->Notifications2, 点击抽屉中的条目,也可以跳转到相应的页面, * 第一个页面还有两个特殊按钮,一个可以打开抽屉,一个可以关闭抽屉。 * * this.props.navigation.navigate('DrawerOpen'); // open drawer * this.props.navigation.navigate('DrawerClose'); // close drawer * * API Definition DrawerNavigator(RouteConfigs, DrawerNavigatorConfig) RouteConfigs The route configs object is a mapping from route name to a route config, which tells the navigator what to present for that route, see example from StackNavigator. DrawerNavigatorConfig drawerWidth - Width of the drawer drawerPosition - Options are left or right. Default is left position. contentComponent - Component used to render the content of the drawer, for example, navigation items. Receives the navigation prop for the drawer. Defaults to DrawerItems. For more information, see below. contentOptions - Configure the drawer content, see below. Example: Default the DrawerView isn't scrollable. To achieve a scrollable View, you have to use the contentComponent to customize the container, as you can see in the example below. { drawerWidth: 200, drawerPosition: 'right', contentComponent: props => <ScrollView><DrawerItems {...props} /></ScrollView> } Several options get passed to the underlying router to modify navigation logic: initialRouteName - The routeName for the initial route. order - Array of routeNames which defines the order of the drawer items. paths - Provide a mapping of routeName to path config, which overrides the paths set in the routeConfigs. backBehavior - Should the back button cause switch to the initial route? If yes, set to initialRoute, otherwise none. Defaults to initialRoute behavior. Providing a custom contentComponent You can easily override the default component used by react-navigation: import { DrawerItems } from 'react-navigation'; const CustomDrawerContentComponent = (props) => ( <View style={style.container}> <DrawerItems {...props} /> </View> ); const styles = StyleSheet.create({ container: { flex: 1, },}); contentOptions for DrawerItems activeTintColor - label and icon color of the active label activeBackgroundColor - background color of the active label inactiveTintColor - label and icon color of the inactive label inactiveBackgroundColor - background color of the inactive label style - style object for the content section labelStyle - style object to overwrite Text style inside content section, when your label is a string Example: contentOptions: { activeTintColor: '#e91e63', style: { marginVertical: 0, }} Screen Navigation Options title Generic title that can be used as a fallback for headerTitle and drawerLabel drawerLabel String, React Element or a function that given { focused: boolean, tintColor: string } returns a React.Element, to display in drawer sidebar. When undefined, scene title is used drawerIcon React Element or a function, that given { focused: boolean, tintColor: string } returns a React.Element, to display in drawer sidebar Navigator Props The navigator component created by DrawerNavigator(...) takes the following props: screenProps - Pass down extra options to child screens, for example: const DrawerNav = DrawerNavigator({ // config}); <DrawerNav screenProps={ //this prop will get passed to the screen components and nav options as props.screenProps }/> */import React from 'react';import { Button, ScrollView, Text, StyleSheet, Image, View, TouchableOpacity,} from 'react-native';import { DrawerNavigator,} from 'react-navigation';class MyHomeScreen extends React.Component { static navigationOptions = { drawerLabel: 'Home', drawerIcon: ({ tintColor }) => ( <Image source={require('./img/notif-icon.png')} style={[styles.icon, {tintColor: tintColor}]} /> ), }; render() { return ( <View style={{flex: 1}}> <TouchableOpacity onPress={() => this.props.navigation.navigate('Notifications')}> <Text style={{textAlign:'right', backgroundColor:'#36bfdf', height: 30, margin:20}}>Go to notifications</Text> </TouchableOpacity> <TouchableOpacity onPress={() => this.props.navigation.navigate('DrawerOpen')}> <Text style={{textAlign:'right', backgroundColor:'#36bfdf', height: 30, margin:20}}>打开</Text> </TouchableOpacity> <TouchableOpacity onPress={() => this.props.navigation.navigate('DrawerClose')}> <Text style={{textAlign:'right', backgroundColor:'#36bfdf', height: 30, margin:20}}>关闭</Text> </TouchableOpacity> </View> ); }}class MyNotificationsScreen extends React.Component { static navigationOptions = { drawerLabel: 'Notifications', drawerIcon: ({ tintColor }) => ( <Image source={require('./img/notif-icon.png')} style={[styles.tabIcon, {tintColor: tintColor}]} /> ), }; render() { return ( <Button onPress={() => this.props.navigation.navigate('Notifications2')} title="Go to notifications2" /> ); }}class MyNotificationsScreen2 extends React.Component { static navigationOptions = { drawerLabel: 'Notifications2', drawerIcon: ({ tintColor }) => ( <Image source={require('./img/notif-icon.png')} style={[styles.tabIcon, {tintColor: tintColor}]} /> ), }; render() { return ( <Button onPress={() => this.props.navigation.navigate('Home')} title="Go back home" /> ); }}const styles = StyleSheet.create({ icon: { width: 24, height: 24, },});const SimpleDrawerNavigator = DrawerNavigator({ Home: { screen: MyHomeScreen, }, Notifications: { screen: MyNotificationsScreen, }, Notifications2: { screen: MyNotificationsScreen2, },});export default SimpleDrawerNavigator;
0 0
- React Navigation--DrwaerNavigator 详细的例子
- React Navigation--Stack Navigator 详细的例子
- React Navigation--TabNavigator 详细的例子
- React Navigation--Stack Navigator 详细的例子
- React Navigation--TabNavigator 详细的例子
- react-navigation的使用
- 【React Native开发】- React Navigation的使用
- react-navigation Navigation使用
- react-navigation
- react-navigation
- react-navigation
- react-navigation
- react-navigation中修改navigation Options所对应的属性
- react-native-navigation-drawer的使用
- 官方推荐react-navigation的使用
- 官方推荐react-navigation的使用
- 官方推荐react-navigation的使用
- react-native navigation的学习与使用
- Redis Cluster原理
- 深度学习在图像识别中的研究进展与展望
- 继承与实现
- Weapp微信小程序开发实战
- 从程序员到项目经理(10):程序员加油站 --要执着但不要固执
- React Navigation--DrwaerNavigator 详细的例子
- springmvc 同时配置thymeleaf和jsp两种模板引擎
- Android Studio/Gradle/重复依赖
- 网络库libevent、libev、libuv对比
- 回溯法———n皇后问题
- cxf-Springmvc-maven实现webservice
- 堆排序算法(Heap Sort) Java实现
- 关于NSDate,NSDateFormatter,NSTimeZone的一些通俗理解
- VS编译方式 \MT \MD \MTd \MDd