React Native中TabBarIOS的简单使用方法示例


Posted in Javascript onOctober 13, 2017

前言

大家应该都知道,TabBarIOS是RN中自带的组件,可直接使用,不用引用第三方组件,下面讲解TabBarIOS的使用方法,话不多说了,来一起看看详细的介绍吧。

首先看一下效果图,如下图所示:

React Native中TabBarIOS的简单使用方法示例
效果图

看完效果图再对代码进行说明.

import React, { Component } from 'react';
import {
 StyleSheet,
 View,
 TabBarIOS,
 NavigatorIOS,
 Navigator,
 AppRegistry,
 Image,
 TouchableHighlight,
 Platform,
} from 'react-native';
//首先导入需要的组件
import Home from './home';
import About from './about';
import Manager from './manager';
import Message from './message';
//这里是导入需要显示的页面
export default class Test extends Component {
 constructor(props){
   super(props);
   this.state = {
    selectedTab:'home',
    data:'',
    isLoadingShow: false,
    title:'首页',
   };
  }
//设置一个初始化默认首先显示首页
componentDidMount() {
 console.log("++++++++++++++++TabBarIOS测试+++++++++++++++");
 }
_selectTab(tabName) {
 this.setState({
  selectedTab: tabName
 });
 }
//修改底部Tab名称,通过状态进行控制
_selectTitle(title) {
 this.setState({
  title: title
 });
 }
//修改顶部导航栏的名称,与Tab名称的修改是同步的
_addNavigator(component, title) {
 let data = null;
 if(title === '公告'){
  data = this.state.data;
 }
 return <NavigatorIOS
  style={{flex:1}}
  barTintColor='#007AFF'
  titleTextColor="#fff"
  tintColor="#fff"
  translucent={false}
  initialRoute={{
   component,
   title,
   passProps:{
   data
   }
  }}
  />;
 }
//这里定义了一个_addNavigator方法,接收两个参数页面名称与导航栏title
_mainJudge(){

  return(

   <View style={{flex:1}}>
    <TabBarIOS barTintColor="#FFF">
    <TabBarIOS.Item
     icon={require('../imgs/phone_s.png')}
     title="首页"
     selected={this.state.selectedTab === 'home'}
     onPress={this._selectTab.bind(this, 'home')}
     >
     {this._addNavigator(Home, '首页')}
    </TabBarIOS.Item>

    <TabBarIOS.Item
     title="公告"
     icon={require('../imgs/gonggao.png')}
     selected={this.state.selectedTab === 'message'}
     onPress={this._selectTab.bind(this, 'message')}
     >
     {this._addNavigator(Message, '公告')}
    </TabBarIOS.Item>

    <TabBarIOS.Item
     title="管理"
     icon={require('../imgs/manager.png')}
     selected={this.state.selectedTab === 'manager'}
     onPress={this._selectTab.bind(this, 'manager')}
     >
     {this._addNavigator(Manager, '管理')}
    </TabBarIOS.Item>

    <TabBarIOS.Item
     title="关于"
     icon={require('../imgs/about.png')}
     selected={this.state.selectedTab === 'about'}
     onPress={this._selectTab.bind(this, 'about')}
     >
     {this._addNavigator(About, '关于')}
    </TabBarIOS.Item>
    </TabBarIOS>
   </View> 
   )
}
//_mainJudge方法是最核心的方法,用于对底部Tab以及顶部Title的布局,其中调用了几个方法上面已经做了说明.
 render() {
 return (
  <View style={styles.container}>
   {this._mainJudge()}
  </View>
 );
 }
}
const styles = StyleSheet.create({
 container:{
 flex:1,
 opacity:1
 },
});

如图所示,导入的import Manager from './manager';Manager页面的内容就会显示在页面,其余页面也是同样的道理.

React Native中TabBarIOS的简单使用方法示例
页面填充效果图

通常进入这样一个页面都是从登陆页面跳转到此页面,或者作为一个子页面呈现.另一个好处就是,拿我的项目为例,点击修改密码,显示如下图所示:

React Native中TabBarIOS的简单使用方法示例
内页效果图

你会看到管理会自动移到左边,title修改为修改密码.就避免了,每个页面都需要定义一个导航栏产生的冗余代码.

如果你想自己完成这样的效果,你只需新建一个项目,新增一个页面,将我的代码拷贝进去即可,注意:我import了四个页面,这个也需要你自己定义,可简单创建几个页面尝试.

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript globalStorage类代码
Jun 04 Javascript
js作用域及作用域链概念理解及使用
Apr 15 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
Feb 17 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
Apr 15 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
Apr 25 Javascript
jquery图片轮播特效代码分享
Apr 20 Javascript
js 中获取制定的cook信息实现方法
Nov 19 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
Feb 05 Javascript
纯js三维数组实现三级联动效果
Feb 07 Javascript
详解vue-cli构建项目反向代理配置
Sep 07 Javascript
web前端vue filter 过滤器
Jan 12 Javascript
vue模式history下在iis中配置流程
Apr 17 Javascript
ReactJS实现表单的单选多选和反选的示例
Oct 13 #Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
Oct 13 #Javascript
捕获未处理的Promise错误方法
Oct 13 #Javascript
解决ie img标签内存泄漏的问题
Oct 13 #Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 #jQuery
vue2组件之select2调用的示例代码
Oct 12 #Javascript
vue2.x select2 指令封装详解
Oct 12 #Javascript
You might like
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
JQuery弹出层示例可自定义
2014/05/19 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
JS 实现百度搜索功能
2018/02/01 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
Python魔法方法详解
2019/02/13 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
汽车队司机先进事迹材料
2014/02/01 职场文书
《藏戏》教学反思
2014/02/11 职场文书
2014年卫生工作总结
2014/11/27 职场文书
阿甘正传观后感
2015/06/01 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
七年级作文之下雨天
2019/12/23 职场文书