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的最佳方法分享
Oct 21 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
js 触发select onchange事件代码
Mar 20 Javascript
使用Sticker.js实现贴纸效果
Jan 28 Javascript
JavaScript动态修改弹出窗口大小的方法
Apr 06 Javascript
JavaScript中Math.SQRT2属性的使用详解
Jun 14 Javascript
Bootstrap每天必学之按钮(一)
Nov 24 Javascript
jQuery进行组件开发完整实例
Dec 15 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
Mar 31 Javascript
JavaScript交换两个变量方法实例
Nov 25 Javascript
el-form 多层级表单的实现示例
Sep 10 Javascript
vue 递归组件的简单使用示例
Jan 14 Vue.js
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
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
php对数组排序的简单实例
2013/12/25 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
用JS实现的一个include函数
2007/07/21 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
TensorFlow saver指定变量的存取
2018/03/10 Python
python实现黑客字幕雨效果
2018/06/21 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
Python检测数据类型的方法总结
2019/05/20 Python
django在开发中取消外键约束的实现
2020/05/20 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
波兰珠宝品牌:YES
2019/08/09 全球购物
陈欧广告词
2014/03/14 职场文书
给校长的建议书400字
2014/05/15 职场文书
优秀员工评优方案
2014/06/13 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
商品陈列协议书
2014/09/29 职场文书
资料员岗位职责
2015/02/10 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
nginx rewrite功能使用场景分析
2022/05/30 Servers