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 相关文章推荐
window.location.hash 使用说明
Nov 08 Javascript
用JSON做数据传输格式中的一些问题总结
Dec 21 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
Aug 13 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
Mar 26 Javascript
js中不同的height, top的区别对比
Sep 24 Javascript
原生javascript上传图片带进度条【实例分享】
Apr 06 Javascript
React SSR样式及SEO的实践
Oct 22 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
Apr 15 Javascript
layui实现数据分页功能(ajax异步)
Jul 27 Javascript
javascript+css实现俄罗斯方块小游戏
Jun 28 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
一个程序下载的管理程序(三)
2006/10/09 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
js修改原型的属性使用介绍
2014/01/26 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
Javascript中作用域的详细介绍
2016/10/06 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
python实现排序算法
2014/02/14 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
django 多数据库及分库实现方式
2020/04/01 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
电影雷锋观后感
2015/06/10 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server