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 相关文章推荐
20款效果非常棒的 jQuery 插件小结分享
Nov 18 Javascript
js修改table中Td的值(定义td的双击事件)
Jan 10 Javascript
Jquery解析Json格式数据过程代码
Oct 17 Javascript
drag-and-drop实现图片浏览器预览
Aug 06 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
Extjs实现下拉菜单效果
Apr 01 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
Jun 17 Javascript
JavaScript仿微博输入框效果(案例分析)
Dec 06 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
vue实现点击当前标签高亮效果【推荐】
Jun 22 Javascript
JS实现碰撞检测效果
Mar 12 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开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
PHP之预定义接口详解
2015/07/29 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
js图片自动切换效果处理代码
2013/05/07 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
python之Socket网络编程详解
2016/09/29 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
三年级班级文化建设方案
2014/05/04 职场文书
小学德育工作总结2015
2015/05/12 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
军训通讯稿范文
2015/07/18 职场文书
九不准学习心得体会
2016/01/23 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏