React-Native进阶_4.底部标签栏TabBar
原生项目中,我们对底部Tab 很熟悉,点击Tab标签可以切换页面,那么在React-Native 中我们该怎么实现呢。
在查了文档后,我们找到了一个TabBarIos ,这个是ios 下使用的Tab 标签,但是没有找到Android 可以使用的,因此 我们需要自己实现,或者使用第三方的,这里,刚接触React不太会自己实现,因此使用github上开源的react-native-tab-navigator,来实现切换的功能。
使用步骤:
安装
Make sure that you are in your React Native project directory and run:
npm install react-native-tab-navigator --save
使用
Import TabNavigator as a JavaScript module:
import TabNavigator from 'react-native-tab-navigator';
This is an example of how to use the component and some of the commonly used props that it supports:
<TabNavigator>
<TabNavigator.Item
selected={this.state.selectedTab === 'home'}
title="Home"
renderIcon={() => <Image source={...} />}
renderSelectedIcon={() => <Image source={...} />}
badgeText="1"
onPress={() => this.setState({ selectedTab: 'home' })}>
{homeView}
</TabNavigator.Item>
<TabNavigator.Item
selected={this.state.selectedTab === 'profile'}
title="Profile"
renderIcon={() => <Image source={...} />}
renderSelectedIcon={() => <Image source={...} />}
renderBadge={() => <CustomBadgeView />}
onPress={() => this.setState({ selectedTab: 'profile' })}>
{profileView}
</TabNavigator.Item>
</TabNavigator>
See TabNavigatorItem's supported props for more info.
/**
* tabbar demo
*/
'use strict'
import TabNavigator from 'react-native-tab-navigator'
import React, {Component} from 'react';
import styles from '../Styles/Main';
import MovieList from './MovieList';
import {
View,
Image,
}from 'react-native';
import USBox from "./USBox";
const TAB_NORMAL_1=require('../Images/bottom_bar_01.png');
const TAB_PRESS_1 =require('../Images/bottom_bar_01_selected.png');
const TAB_NORMAL_2=require('../Images/bottom_bar_02.png');
const TAB_PRESS_2=require('../Images/bottom_bar_02_selected.png');
export default class TabBarComponent extends Component{
constructor(props) {
super(props);
this.state={
selectedTab:'home',
}
}
render(){
return(
<View style={styles.Container}>
<TabNavigator>
<TabNavigator.Item
selected={this.state.selectedTab === 'home'}
title="Home"
renderIcon={() => <Image source={TAB_NORMAL_1} style ={styles.icon} />}
renderSelectedIcon={() => <Image source={TAB_PRESS_1}style ={styles.icon} />}
badgeText="1"
onPress={() => this.setState({ selectedTab: 'home' })}>
<MovieList />
</TabNavigator.Item>
<TabNavigator.Item
selected={this.state.selectedTab === 'profile'}
title="Profile"
renderIcon={() => <Image source={TAB_NORMAL_2} style ={styles.icon} />}
renderSelectedIcon={() => <Image source={TAB_PRESS_2} style ={styles.icon} />}
onPress={() => this.setState({ selectedTab: 'profile' })}>
<USBox />
</TabNavigator.Item>
</TabNavigator>
</View>
);
}
}
实现Tab切换功能的代码就是 return 中的TabNavigator ,这里我添加了两个Tab标签。
标签构建基本介绍:
selected: bool型,是否选中状态,可使用setState进行控制,默认false
title: 标题,String类型,非必填
renderIcon: 必填项,即图标,但为function类型,所以这里需要用到Arrow Function
renderSelectedIcon: 选中状态的图标,非必填,也是function类型
onPress: function型,即点击事件的回调函数,这里需要控制的是state,而切换页面已经由控件本身帮我们实现好了
ps:记得在构造方法中指定默认选中标签: selectedTab。
指定两个Tab 切换要展示的页面 <MovieList />和 <USBox />。
实现效果:
-----------------------------期待大神们的到来
------------------------一---起分享,一起进步!需要你们
React-Native进阶_4.底部标签栏TabBar的更多相关文章
- [RN] React Native 下实现底部标签(支持滑动切换)
上一篇文章 [RN] React Native 下实现底部标签(不支持滑动切换) 总结了不支持滑动切换的方法,此篇文章总结出 支持滑动 的方法 准备工作之类的,跟上文类似,大家可点击上文查看相关内容. ...
- react native进阶
一.前沿||潜心修心,学无止尽.生活如此,coding亦然.本人鸟窝,一只正在求职的鸟.联系我可以直接微信:jkxx123321 二.项目总结 **||**文章参考资料:1. http://blog ...
- [RN] React Native 下实现底部标签(不支持滑动切换)
底部标签是现在App的基本菜单实现 下面分别用 createBottomTabNavigator 和 createMaterialBottomTabNavigator 两种方法分别实现底部菜单 但此两 ...
- React Native 学习笔记--进阶(二)--动画
React Native 进阶(二)–动画 动画 流畅.有意义的动画对于移动应用用户体验来说是非常必要的.我们可以联合使用两个互补的系统:用于全局的布局动画LayoutAnimation,和用于创建更 ...
- React Native专题-江清清
本React Native讲解专题:主要讲解了React Native开发,由基础环境搭建配置入门,基础,进阶相关讲解. 刚创建的React Native交流8群:533435865 欢迎各位大牛, ...
- React Native 常用插件案例
(二).基础入门: 1.React Native For Android环境配置以及第一个实例 2.React Native开发IDE安装及配置 3.React Native应用设备运行(Runnin ...
- React Native专题
转载注明出处:地址:http://www.lcode.org本文出自:[江清清的技术专栏]本React Native讲解专题:主要讲解了React Native开发,由基础环境搭建配置入门,基础,进阶 ...
- react native 底部按钮切换
在react native 中底部按钮的切换 主要的是运用的是<TabBarNavigator/>这个组件,具体的代码实现如下: render() { return ( <T ...
- React Native(四)——顶部以及底部导航栏实现方式
效果图: 一步一步慢慢来: 其实刚入手做app的时候,就应该做出简单的顶部以及底部导航栏.无奈又在忙其他事情,导致这些现在才整理出来. 1.顶部导航栏:react-native-scrollable- ...
随机推荐
- Python Matplotlib简易教程【转】
本文转载自:https://blog.csdn.net/Notzuonotdied/article/details/77876080 详情请见:Matplotlib python 数据可视化神器 简单 ...
- jquery实现全选/全不选
//设置全选全不选$("#checkAll").click(function () { if ($("#checkAll").attr("checke ...
- PHP Fatal error: Call to undefined function imagecreatetruecolor()
是因为没有安装gd apt-get install libgd2-xpm-dev* apt-get install php5-gd
- POJ 3352 Road Construction(边—双连通分量)
http://poj.org/problem?id=3352 题意: 给出一个图,求最少要加多少条边,能把该图变成边—双连通. 思路:双连通分量是没有桥的,dfs一遍,计算出每个结点的low值,如果相 ...
- gitlab 去除代码保护
- 常见HTTP状态(304,)
一.1XX(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示:已经收到请求的第一部分,正在等待其余部分. 101(切换协议) 请 ...
- JAVA8 HashMap 源码阅读
序 阅读java源码可能是每一个java程序员的必修课,只有知其所以然,才能更好的使用java,写出更优美的程序,阅读java源码也为我们后面阅读java框架的源码打下了基础.阅读源代码其实就像再看一 ...
- thinkphp 模板中得到controller name,得到当前文件路径
<li><a href="/Admin/account" <eq name="Think.CONTROLLER_NAME" value= ...
- docker自建仓库Registry
因为生产情况下官方容器还是比较慢的,所以会用到自建docker仓库.docker官方提供完整部署仓库的容器,你只需要提供域名证书,把文件系统挂载到容器,一个用户密码文件就可以使用基本的仓库功能了. 启 ...
- 页面title加icon
把favicon.ico放入根目录下,在head中添加一下代码 <link rel="icon" type="image/x-icon" href=&qu ...