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 相关文章推荐
用jscript实现新建word文档
Jun 15 Javascript
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
JavaScript类属性的访问方式详解
Feb 11 Javascript
jQuery多项选项卡的实现思路附样式及代码
Jun 03 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
Sep 22 Javascript
json格式数据的添加,删除及排序方法
Jan 21 Javascript
微信小程序 PHP后端form表单提交实例详解
Jan 12 Javascript
浅谈JS中的反柯里化( uncurrying)
Aug 17 Javascript
Bootstrap实现下拉菜单多级联动
Nov 23 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
Nov 15 Javascript
JS模拟浏览器实现全局搜索功能
Sep 11 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读取javascript设置的cookies的代码
2010/04/12 PHP
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
Python完全新手教程
2007/02/08 Python
Python map和reduce函数用法示例
2015/02/26 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
给领导的致歉信范文
2014/01/13 职场文书
上课睡觉检讨书
2014/01/28 职场文书
业务内勤岗位职责
2014/04/30 职场文书
高校优秀辅导员事迹材料
2014/05/07 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
教师培训学习心得体会
2016/01/21 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
关于vue-router-link选择样式设置
2022/04/30 Vue.js
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技