react-native构建基本页面1---主页:tab栏

时间:2022-09-07 09:29:40

配置Tab栏

配置Tab栏的图标

注意:使用图标,需要接收 license;

/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/ import React, { Component } from 'react';
import {
StyleSheet,
Text,
View
} from 'react-native'; // 导入 Tabbar 相关的组件
import TabNavigator from 'react-native-tab-navigator' // 导入 Tab 栏的组件
import Home from './components/tabbars/Home.js'
import Search from './components/tabbars/Search.js'
import ShopCar from './components/tabbars/ShopCar.js'
import Me from './components/tabbars/Me.js' // 当修改了 项目根目录中,Android 目录下的任何文件之后,如果想要看项目效果,不要使用 react-native start了,而是需要再一次编译安装一下项目 ,运行 react-native run-android
// 导入图标相关的组件
import Icon from 'react-native-vector-icons/FontAwesome' export default class App extends Component {
constructor(props) {
super(props)
this.state = {
selectedTab: 'home' // 选中的tab栏名称
}
} render() {
return (
<View style={styles.container}> {/* Tab栏区域 */}
<TabNavigator> {/* 主页的 Tab栏 */}
<TabNavigator.Item
selected={this.state.selectedTab === 'home'} // 判断当前的 tab栏是否被选中的
title="主页" // 表示 tabbar 上展示的内容
renderIcon={() => <Icon name="home" size={25} color="gray" />} // 未选中状态下,展示的图标
renderSelectedIcon={() => <Icon name="home" size={25} color="#0079FF" />} // 选中状态下展示的图标
onPress={() => this.setState({ selectedTab: 'home' })} // 点击Tab栏的操作
>
<Home></Home>
</TabNavigator.Item> {/* 搜索的 Tab栏 */}
<TabNavigator.Item
selected={this.state.selectedTab === 'search'}
title="搜索"
renderIcon={() => <Icon name="search" size={25} color="gray" />}
renderSelectedIcon={() => <Icon name="search" size={25} color="#0079FF" />}
onPress={() => this.setState({ selectedTab: 'search' })}
>
<Search></Search>
</TabNavigator.Item> {/* 购物车的 Tab栏 */}
<TabNavigator.Item
selected={this.state.selectedTab === 'shopcar'}
title="购物车"
badgeText="0"
renderIcon={() => <Icon name="shopping-cart" size={25} color="gray" />}
renderSelectedIcon={() => <Icon name="shopping-cart" size={25} color="#0079FF" />}
onPress={() => this.setState({ selectedTab: 'shopcar' })}
>
<ShopCar></ShopCar>
</TabNavigator.Item> {/* Me的 Tab栏 */}
<TabNavigator.Item
selected={this.state.selectedTab === 'me'}
title="Me"
renderIcon={() => <Icon name="user" size={25} color="red" />}
renderSelectedIcon={() => <Icon name="user-o" size={25} color="#0079FF" />}
onPress={() => this.setState({ selectedTab: 'me' })}
>
<Me></Me>
</TabNavigator.Item> </TabNavigator> </View>
);
}
} const styles = StyleSheet.create({
container: {
flex: 1
}
}); // 不推荐使用 npm 下载包,首先:下载速度慢,其次,如果是 npm 5.x,在装新包的时候,会把一些老包删除
// 推荐使用 facebook 开发的 yarn 来安装包 yarn add 包名

react-native构建基本页面1---主页:tab栏的更多相关文章

  1. 从零学React Native之03页面导航

    之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 从零学React Native之02状态机 本篇主要介绍页面导航 上一篇文章给 ...

  2. react native &lpar;1&rpar; 新建页面并跳转

    新建页面 1.新建文件 import React from 'react'; import { Text } from 'react-native'; export default class tod ...

  3. react native tap切换页面卡顿

    问题描述:做一个页面,左边是导航,每次点击一个菜单,右边立即显示出对应的视图,数据会重新过滤,使用setState 更新视图,会卡顿 解决办法: InteractionManager.runAfter ...

  4. React Native 中 跨页面间通信解决方案之 react-native-event-bus

    https://github.com/crazycodeboy/react-native-event-bus 用法: A页面和B页面中都有相同的列表,点击B页面中的收藏按钮,A页面会跟着更新 impo ...

  5. React Native登录注册页面实现空白处收起键盘

    其实很简单,直接使用ScrollView作为父视图即可.有木有很神奇啊,以前都还不知道呢.....

  6. 【React Native】某个页面禁用物理返回键

    1.引入组件 import { BackHandler, } from 'react-native'; 2.添加监听 componentDidMount(): void { BackHandler.a ...

  7. React Native初探

    前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...

  8. React Native 简介:用 JavaScript 搭建 iOS 应用 &lpar;1&rpar;

    [编者按]本篇文章的作者是 Joyce Echessa--渥合数位服务创办人,毕业于*大学,近年来专注于协助客户进行 App 软体以及网站开发.本篇文章中,作者介绍通过 React Native 框 ...

  9. React Native指南汇集了各类react-native学习资源、开源App和组件

    来自:https://github.com/ele828/react-native-guide React Native指南汇集了各类react-native学习资源.开源App和组件 React-N ...

  10. 如何用 React Native 创建一个iOS APP?(三)

    前两部分,<如何用 React Native 创建一个iOS APP?>,<如何用 React Native 创建一个iOS APP (二)?>中,我们分别讲了用 React ...

随机推荐

  1. 【leetcode】House Robber &amp&semi; House Robber II(middle)

    You are a professional robber planning to rob houses along a street. Each house has a certain amount ...

  2. iOS不得姐项目--登录模块的布局&comma;设置文本框占位文字颜色&comma;自定义内部控件竖直排列的按钮

    一.登录模块的布局 将一整部分切割成若*分来完成,如图分成了三部分来完成 设置顶部状态栏为白色的方法 二.设置文本框占位文字颜色 <1>方法一与方法二实现原理是同一种,都是通过设置pla ...

  3. linux动态库默认搜索路径设置的三种方法

    众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/lib .动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两 ...

  4. alibaba笔试1

    5.D 一个线程不可以改变另一个线程的程序计数器.如果改变了,线程在切换后就恢复不到正确的位置. 一个线程可以访问另一个线程的栈.http://bbs.csdn.net/topics/39008942 ...

  5. opengl打开本地bmp图片绘制

    注意bmp图片的格式问题,32位ARGB  或者24位RGB.你所采用的素材一定要注意是多少位的就用多少位的.否则会显示错误的图片或者其他什么的错误. 代码如下 32位版本 #include < ...

  6. 关于ibatis进行物理游标分页

    http://www.iteye.com/topic/136712 详细demo:参照http://www.kusoft.net 我的数据库是采用mssql2000 采用分页必定数据量比较大: 按照i ...

  7. mongodb创建用户和密码

    创建数据库文件夹与日志文件mkdir /home/mongodb/datamkdir /home/mongodb/logstouch(创建文件)3. 启动mongodbcd到mongodb目录下的bi ...

  8. 如何解决sql server定时作业调用Kettle job出错

    错误信息: Unable to list jar files in plugin folder 'C:\Windows\system32\config\systemprofile\.kettle\pl ...

  9. AngularJS进阶&lpar;二十一&rpar;Angularjs中scope与rootscope区别及联系

    Angularjs中scope与rootscope区别及联系 scope是html和单个controller之间的桥梁,数据绑定就靠他了.rootscope是各个controller中scope的桥梁 ...

  10. IDEA 根据 Mysql 自动生成

    1 找到 没有的,file--project structure--modules--+--JPA 2  找到如下 添加Mysql连接,记得 Text Connecting一下看看 然后刷新,就可以出 ...