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 CSS 修改学习第四章 透明度设置
Feb 19 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
Jan 06 Javascript
调用innerHTML之后onclick失效问题的解决方法
Jan 28 Javascript
jquery实现的鼠标下拉滚动置顶效果
Jul 24 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
Oct 08 Javascript
jQuery实现首页图片淡入淡出效果的方法
Jun 10 Javascript
javascript中call apply 与 bind方法详解
Mar 10 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
Highcharts学习之数据列
Aug 03 Javascript
用js制作淘宝放大镜效果
Oct 28 Javascript
JavaScript文件的同步和异步加载的实现代码
Aug 19 Javascript
小程序实现长按保存图片的方法
Dec 31 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将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
详解js异步文件加载器
2016/01/24 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
js GridView 实现自动计算操作代码
2009/03/25 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
Python内置的字符串处理函数整理
2013/01/29 Python
Python中使用动态变量名的方法
2014/05/06 Python
python之import机制详解
2014/07/03 Python
python中defaultdict的用法详解
2017/06/07 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
如何通过python计算圆周率PI
2020/11/11 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
数学国培研修感言
2014/02/13 职场文书
保研推荐信
2014/05/09 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers