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脚本性能的优化方法
Feb 02 Javascript
javascript禁用键盘功能键让右击及其他键无效
Oct 09 Javascript
JavaScript中获取鼠标位置相关属性总结
Oct 11 Javascript
js的window.showModalDialog及window.open用法实例分析
Jan 29 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
Sep 17 Javascript
详解Javascript数据类型的转换规则
Dec 12 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
Jan 04 Javascript
Angularjs中date过滤器失效的问题及解决方法
Jul 06 Javascript
Vue作用域插槽slot-scope实例代码
Sep 05 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
Sep 16 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 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函数和特点
2013/08/08 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
python自动化测试之连接几组测试包实例
2014/09/28 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
Python坐标线性插值应用实现
2019/11/13 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
学生实习介绍信
2014/01/15 职场文书
爱心捐款倡议书
2014/04/14 职场文书
教师年度考核评语
2014/04/28 职场文书
应届大学生自荐书
2014/06/17 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
公安机关起诉意见书
2015/05/20 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python