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 new 需不需要继续使用
Jul 02 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
Jul 31 Javascript
js模拟select下拉菜单控件的代码
May 08 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
jQuery中wrapInner()方法用法实例
Jan 16 Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 Javascript
JS作为值的函数用法示例
Jun 20 Javascript
jQuery上传多张图片带进度条样式(DEMO)
Mar 02 Javascript
详解Vue单元测试Karma+Mocha学习笔记
Jan 31 Javascript
使用react render props实现倒计时的示例代码
Dec 06 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
Aug 27 Javascript
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
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数据库操作类代码(增,删,改,查)
2013/04/08 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
php实现微信支付之退款功能
2018/05/30 PHP
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
python中base64加密解密方法实例分析
2015/05/16 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
试用期转正鉴定评语
2014/01/27 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
个人四风对照检查材料
2014/09/26 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby