博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react-navigation 实战
阅读量:5930 次
发布时间:2019-06-19

本文共 6594 字,大约阅读时间需要 21 分钟。

npm install --save react-navigation

1.测试TabNavigator、StackNavigator和DrawerNavigator

(1)新建HomeScreen.js

/** * 主页面 */import React, { Component } from 'react';import {    StyleSheet,    View,    Text,    Button,    Image,} from 'react-native';// 引入 导航组件import {    StackNavigator,    TabNavigator,    TabBarBottom,} from 'react-navigation';// TabBar 子组件import TabBarItem from './TabBarItem';// 引入 其他组件import MainScreen from './MainPage';  import MineScreen from './MinePage';import ChatScreen from './ChatScreen'; export default class HomeScreen extends Component {    // 渲染页面    render() {        return (            
) }}/** * TabNavigator Tab选项卡 * TabNavigator(RouteConfigs, TabNavigatorConfig) * 参数1:表示各个页面路由配置 * 参数2:tab属性配置 */// 注册tabs (底部选项卡)const Tab = TabNavigator( { Main:{ screen:MainScreen, // 对应界面名称,可以在其他页面通过这个screen传值和跳转。 navigationOptions:({navigation}) => ({ // 配置TabNavigator的一些属性 tabBarLabel:'首页', // 设置标签栏的title tabBarIcon:({focused,tintColor}) => ( // 设置标签栏的图标。需要给每个都设置
) }), }, Mine:{ screen:MineScreen, navigationOptions:({navigation}) => ({ tabBarLabel:'我的', tabBarIcon:({focused,tintColor}) => (
) }), }, }, { tabBarComponent:TabBarBottom, // 导航器 组件 tabBarPosition:'bottom', // 显示在底端,android 默认是显示在页面顶端的 swipeEnabled:false, // 禁止左右滑动 animationEnabled:false, // 切换页面时不显示动画 lazy:true, // 懒加载 tabBarOptions:{ activeTintColor:'#06c1ae', // 文字和图片选中颜色 inactiveTintColor:'#979797', // 文字和图片默认颜色 indicatorStyle: {height: 0}, // android 中TabBar下面会显示一条线,高度设为 0 后就不显示线了 style:{ backgroundColor:'#ffffff', // TabBar 背景色 }, labelStyle: { fontSize: 12, // 文字大小 }, } } ); /** * 注册导航 */const Navigator = StackNavigator( { Tab:{screen:Tab}, Chat:{screen:ChatScreen}, }, { initialRouteName:'Tab', // 默认显示页面 navigationOptions:{ // header:null, // 可以设置一些导航的属性,如果隐藏顶部导航栏只要将这个属性设置为null headerBackTitle: null, // 设置跳转页面左侧返回箭头后面的文字,默认是上一个页面的标题。 headerTitleStyle: {fontSize:18, color:'#666666',alignSelf:'center'}, // 设置alignSelf:'center' 文字居中 headerStyle: {height:48, backgroundColor:'#00BFFF'}, }, mode:'card', // 使用iOS和安卓默认的风格 });

(2)新建MainPage.js

/** * 首页 */import React, { Component } from 'react';import {  Button,  Image,  View,  Text,  StyleSheet,} from 'react-native'; export default class MainPage extends Component {  static navigationOptions = {    title:'首页', // 顶部标题  };  render() {    const {navigate} = this.props.navigation;    return(      
{ navigate('Chat',{user:'Sybil'}) }}>点击跳转到'聊天页面'
); } _skip() { /** * 页面跳转并传值 * 参数1:页面名称 * 参数2:传的值 *
点击跳转到'我的页面'
*/ // this.props.navigation.navigate('Chat',{user:'Sybil'}); } }// 层叠样式表const styles = StyleSheet.create({ container: { flex: 1, alignItems: 'center', justifyContent: 'center', },});

(3)新建MinePage.js

/** * 我的 */import React, {Component} from 'react';import {  Button,  Image,  View,  Text,  StyleSheet,} from 'react-native'; import {  DrawerNavigator} from 'react-navigation';// 引入 侧滑菜单组件 (通知页)import MyNotificationsScreen from './MyNotificationsScreen';// 定义 我的组件class MinePage extends Component{  // 定义抽屉子组件样式  static navigationOptions = {    title:'我的',    drawerLabel: '我的',    drawerIcon: ({ tintColor }) => (          ),  };    // 组件加载完成  componentDidMount() {    // 获取传值 {this.props.navigation.state.params.info}    // const {params} = this.props.navigation.state;    // const user = params.user;    // alert(user);  }  render(){;    return(      
Sybil

(4)编写TabBarItem.js

/** * TabBarItem 组件 */import React,{Component} from 'react';  import {Image} from 'react-native';    export default class TabBarItem extends Component {    render() {          return(                        )      } }

(5)编写ChatScreen.js

/** * 聊天页 */import React, { Component } from 'react';import {    Button,    Image,    View,    Text} from 'react-native'; export default class ChatScreen extends Component {    static navigationOptions = {        title:'聊天',    };     render() {        const {params} = this.props.navigation.state;        return (        
Chat with {params.user}
); }}

(6)编写MyNotificationsScreen.js

/** * 侧滑菜单 * 通知页 */import React, { Component } from 'react';import {    StyleSheet,    View,    Text,    Button,    Image} from 'react-native';// 定义 通知组件export default class MyNotificationsScreen extends Component {    // 定义抽屉子组件样式    static navigationOptions = {        title:'通知',        drawerLabel: '通知',        drawerIcon: ({ tintColor }) => (                    ),    };     render() {        return (             

效果图

转载地址:http://joktx.baihongyu.com/

你可能感兴趣的文章
项目特质与设计开发流程的策略选择
查看>>
小程序弹性Web之旅
查看>>
[喵咪Golang(1)]Go语言开篇
查看>>
SQL Server存储过程
查看>>
HTML 控制密码框的可见和隐藏
查看>>
pg_cancel_backend()和pg_terminate_backend()
查看>>
Java Web之网络通讯
查看>>
SVG实例之中国地图
查看>>
css3选择器(一)
查看>>
windows hosts文件备忘
查看>>
实现蜘蛛捕捉的PHP代码
查看>>
袋鼠宝宝们,出来见客啦
查看>>
信息摘要算法-CRC(循环冗余校验)
查看>>
Guice系列之用户指南(一)
查看>>
会话管理之Cookie技术
查看>>
Activiti 由bpmn文件到BpmnModel实体类转换
查看>>
Laravel5做权限管理
查看>>
EasyUI----DataGrid 导出 Excel
查看>>
领域驱动设计常见问题FAQ
查看>>
测试框架 Mocha 实例教程
查看>>