1.修改后的 Main.js

  1. /**
  2. * 主页面
  3. */
  4. import React, { Component } from 'react';
  5. import {
  6. StyleSheet,
  7. Text,
  8. View,
  9. Image,
  10. Platform, //判断当前运行的系统
  11. } from 'react-native';
  12.  
  13. /*=============导入外部组件类==============*/
  14. import TabNavigator from 'react-native-tab-navigator';
  15. import CustomerComponents, { Navigator } from 'react-native-deprecated-custom-components';
  16.  
  17. // 引入外部的组件(此处注意是相当于了项目根目录)
  18. var Home = require('../Component/Home');
  19. var Message = require('../Component/Message');
  20. var Find = require('../Component/Find');
  21. var Mine = require('../Component/Mine');
  22.  
  23. // ES5
  24. var Main = React.createClass({
  25. // 初始化函数(变量是可以改变的,充当状态机的角色)
  26. getInitialState(){
  27. return{
  28. selectedTab:'home' // 默认选中的tabBar
  29. }
  30. },
  31.  
  32. render() {
  33. return (
  34. <TabNavigator>
  35. {/*--首页--*/}
  36. {this.renderTabBarItem('首页','icon_tabbar_home','icon_tabbar_home_selected','home','首页',Home,1)}
  37. {/*--消息--*/}
  38. {this.renderTabBarItem('消息','icon_tabbar_message','icon_tabbar_message_selected','message','消息',Message,2)}
  39. {/*--发现--*/}
  40. {this.renderTabBarItem('发现','icon_tabbar_find','icon_tabbar_find_selected','find','发现',Find)}
  41. {/*--我的--*/}
  42. {this.renderTabBarItem('我的','icon_tabbar_mine','icon_tabbar_mine_selected','mine','我的',Mine)}
  43. </TabNavigator>
  44. );
  45. },
  46.  
  47. // 封装tabBarItem
  48. renderTabBarItem(title,iconName,selectedIconName,selectedTab,componentName,component,badgeText){
  49. return(
  50. <TabNavigator.Item
  51. title={title}
  52. renderIcon={() => <Image source={{uri:iconName}} style={styles.iconStyle} />}
  53. renderSelectedIcon={() => <Image source={{uri:selectedIconName}} style={styles.iconStyle} />}
  54. selected={this.state.selectedTab === selectedTab}
  55. onPress={() => this.setState({ selectedTab: selectedTab })}
  56. selectedTitleStyle={styles.selectedTitleStyle} //tabBarItem选中的文字样式
  57. badgeText={badgeText}
  58. >
  59. <Navigator
  60. initialRoute={{name: componentName, component:component}}
  61. configureScene={()=>{
  62. return Navigator.SceneConfigs.PushFromRight;
  63. }}
  64. renderScene={(route, navigator) =>{
  65. let Component = route.component;
  66. return <Component {...route.passProps} navigator={navigator} />
  67. }}
  68. />
  69. </TabNavigator.Item>
  70. )
  71. }
  72. });
  73.  
  74. const styles = StyleSheet.create({
  75. // icon默认样式
  76. iconStyle:{
  77. width: Platform.OS === 'ios' ? 30 : 25,
  78. height:Platform.OS === 'ios' ? 30 : 25,
  79. },
  80. // tabBarItem选中的文字样式
  81. selectedTitleStyle:{
  82. color: 'rgba(212,97,0,1)',
  83. }
  84. });
  85.  
  86. // 输出
  87. module.exports = Main;

2.效果图

.

react-native 项目实战 -- 新闻客户端(3) -- 包装导航控制器的更多相关文章

  1. React Native 项目实战-Tamic

    layout: post title: React Native 项目实战 date: 2016-10-18 15:02:29 +0800 comments: true categories: Rea ...

  2. 【腾讯Bugly干货分享】React Native项目实战总结

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e16a7640ad7b4682c64a7 “8小时内拼工作,8小时外拼成长 ...

  3. React Native 项目实战 -- DoubanProject

    引言:本文是我研究react-native时写的一个简单的demo,代码里有详细的注释,好废话不多说,直接上代码. 1.项目目录 2.index.android.js /** * index.andr ...

  4. React Native项目实战

    算是学习React Native的一次项目总结吧,目的还是提高自己. 包含的内容: 1>仿"美团"页面的实现; 2>封装项目中和自己常用的一些组件; 3>学习别人 ...

  5. react-native 项目实战 -- 新闻客户端(7) -- 新闻详情页

    http://c.3g.163.com/nc/article/BUH64L0J00031H2L/full.html 观察这个地址,BUH64L0J00031H2L 就是每条新闻数据里的postid.  ...

  6. react-native 项目实战 -- 新闻客户端(6) -- 完善ListView头部视图

    1.因为需要定时器,所以我们要cd到当前项目根目录下安装这个类库: $ npm i react-timer-mixin --save 2.Component/ScrollImage.js /** * ...

  7. react-native 项目实战 -- 新闻客户端(4) -- 请求网络数据

    1.Home.js /** * 首页 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Te ...

  8. react-native 项目实战 -- 新闻客户端(2) -- 完善TabBar

    1.创建 drawable-xxhdpi 文件夹,保存 TabBar 的 icon图标 android  --  app  --  src  --  main  --  res  --  drawab ...

  9. react-native 项目实战 -- 新闻客户端(1) -- 初始化项目结构

    1.在项目根目录新建Componet文件夹(专门用来放我们的自定义组件),里面新建Main.js.Home.js.Message.js.Mine.js.Find.js 2.修改 index.andro ...

随机推荐

  1. 无法更新 EntitySet“W_ReceiveData”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <InsertFunction> 元素。

    无法更新 EntitySet“W_ReceiveData”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作 ...

  2. redis集群PHP解决方案

    Redis3.2.4 Cluster集群搭建 服务器环境:192.168.3.229192.168.3.193每台服务器搭建3个节点,组成3个主节点,3个从节点的redis集群. 注意:防火墙一定要开 ...

  3. django返回响应对象

    Django的视图必须要返回一个HttpResponse对象(或者其子类对象),不能像flask一样直接返回字符串. Django: return HttpResponse("Hello&q ...

  4. ppt提取图片,视频文件

    1,将视频另存为htm格式,然后会生成文件夹,里面就有. 2,如果没法生成htm格式,可以生成odp格式,压缩文件,用解压缩软件查看odp文件,就能看到. 3,pptx直接修改后缀为rar或者zip, ...

  5. 牛客网 暑期ACM多校训练营(第二场)J.farm-STL(vector)+二维树状数组区间更新、单点查询 or 大暴力?

    开心.jpg J.farm 先解释一下题意,题意就是一个n*m的矩形区域,每个点代表一个植物,然后不同的植物对应不同的适合的肥料k,如果植物被撒上不适合的肥料就会死掉.然后题目将每个点适合的肥料种类( ...

  6. HDU 6240 Server(2017 CCPC哈尔滨站 K题,01分数规划 + 树状数组优化DP)

    题目链接  2017 CCPC Harbin Problem K 题意  给定若干物品,每个物品可以覆盖一个区间.现在要覆盖区间$[1, t]$. 求选出来的物品的$\frac{∑a_{i}}{∑b_ ...

  7. #422 Div2 D

    #422 Div2 D 题意 假设有 n 个人比赛,每次比赛进行分组,每组人数必须相同,如果一组有 x 人,则那一组要比赛 $ \frac{x * (x - 1)}{2}$次,最终一人获胜,其它人淘汰 ...

  8. APP专项测试 | 内存及cpu

    命令: adb shell dumpsys meminfo  packagename 关注点: 1.Native/Dalvik 的 Heap 信息 具体在上面的第一行和第二行,它分别给出的是JNI层和 ...

  9. IE浏览器Cookie信息提取工具Galleta

    IE浏览器Cookie信息提取工具Galleta   浏览器Cookie中保存着用户访问网站的各项敏感信息,如用户登录凭证.提取这些信息后,就可以以该用户的身份访问对应的网站.为了方便信息获取,Kal ...

  10. [POJ 2329] Nearest number-2

    Link: POJ 2329 传送门 Solution: 比较明显的$dp$,但爆搜好像也能过 用多个方向$dp$来解决此题,最后汇总答案即可 一开始我写了4个,但后来发现只要相反的2个方向即可,同时 ...