react-native 项目实战 -- 新闻客户端(3) -- 包装导航控制器
2017-07-31 19:26
537 查看
1.修改后的 Main.js
2.效果图
.
/** * 主页面 */ import React, { Component } from 'react'; import { StyleSheet, Text, View, Image, Platform, //判断当前运行的系统 } from 'react-native'; /*=============导入外部组件类==============*/ import TabNavigator from 'react-native-tab-navigator'; import CustomerComponents, { Navigator } from 'react-native-deprecated-custom-components'; // 引入外部的组件(此处注意是相当于了项目根目录) var Home = require('../Component/Home'); var Message = require('../Component/Message'); var Find = require('../Component/Find'); var Mine = require('../Component/Mine'); // ES5 var Main = React.createClass({ // 初始化函数(变量是可以改变的,充当状态机的角色) getInitialState(){ return{ selectedTab:'home' // 默认选中的tabBar } }, render() { return ( <TabNavigator> {/*--首页--*/} {this.renderTabBarItem('首页','icon_tabbar_home','icon_tabbar_home_selected','home','首页',Home,1)} {/*--消息--*/} {this.renderTabBarItem('消息','icon_tabbar_message','icon_tabbar_message_selected','message','消息',Message,2)} {/*--发现--*/} {this.renderTabBarItem('发现','icon_tabbar_find','icon_tabbar_find_selected','find','发现',Find)} {/*--我的--*/} {this.renderTabBarItem('我的','icon_tabbar_mine','icon_tabbar_mine_selected','mine','我的',Mine)} </TabNavigator> ); }, // 封装tabBarItem renderTabBarItem(title,iconName,selectedIconName,selectedTab,componentName,component,badgeText){ return( <TabNavigator.Item title={title} renderIcon={() => <Image source={{uri:iconName}} style={styles.iconStyle} />} renderSelectedIcon={() => <Image source={{uri:selectedIconName}} style={styles.iconStyle} />} selected={this.state.selectedTab === selectedTab} onPress={() => this.setState({ selectedTab: selectedTab })} selectedTitleStyle={styles.selectedTitleStyle} //tabBarItem选中的文字样式 badgeText={badgeText} > <Navigator initialRoute={{name: componentName, component:component}} configureScene={()=>{ return Navigator.SceneConfigs.PushFromRight; }} renderScene={(route, navigator) =>{ let Component = route.component; return <Component {...route.passProps} navigator={navigator} /> }} /> </TabNavigator.Item> ) } }); const styles = StyleSheet.create({ // icon默认样式 iconStyle:{ width: Platform.OS === 'ios' ? 30 : 25, height:Platform.OS === 'ios' ? 30 : 25, }, // tabBarItem选中的文字样式 selectedTitleStyle:{ color: 'rgba(212,97,0,1)', } }); // 输出 module.exports = Main;
2.效果图
.
相关文章推荐
- react-native 项目实战 -- 新闻客户端(2) -- 完善TabBar
- react-native 项目实战 -- 新闻客户端(4) -- 请求网络数据
- react-native 项目实战 -- 新闻客户端(1) -- 初始化项目结构
- react-native 项目实战 -- 新闻客户端(5) -- 完善首页列表数据
- react-native 项目实战 -- 新闻客户端(6) -- 完善ListView头部视图
- react-native 项目实战 -- 新闻客户端(7) -- 新闻详情页
- React Native商城项目实战03 - 包装Navigator
- react_native 项目实战 (3) 使用导航页面跳转 (ReactNaviation 完全自定义导航)
- 新闻客户端03 - 包装导航控制器
- React Native商城项目实战03 - 包装Navigator
- 猫猫学iOS 之微博项目实战(2)微博主框架-自己定义导航控制器NavigationController
- React_Native项目实战之fetch请求
- React-Native 之 项目实战(四)
- AJ学IOS 之微博项目实战(2)微博主框架-自定义导航控制器NavigationController
- React_Native 项目实战 (1) (首页,以及页面的切换)
- 猫猫学iOS 之微博项目实战(2)微博主框架-自己定义导航控制器NavigationController
- 从一个实战项目来看一下React Native开发的几个关键技术点
- React-Native 之 项目实战(三)
- React Native商城项目实战15 - 首页购物中心
- 猫猫学iOS 之微博项目实战(2)微博主框架-自己定义导航控制器NavigationController