开源代码分析-react-native-eyepetizer
目录结构:
app----imgs
--- pages ------ home
------ explore
------ follow
------ profile
------ selected
--- utils
启动流程:
---> index.js ----> /home/InitApp.js (InitApp ) ------> render()-----------> /home/MainPage ------> render()
主要代码摘要:
index.js
AppRegistry.registerComponent('Eyepetizer', ()=>InitApp);
InitApp.js
render() { return (
<Navigator
ref="navigator"
//初始化默认页面,也就是启动app后看到的第一屏
initialRoute={{name: 'MainPage', component: MainPage}} /**
* 配置页面之间跳转的动画,还有其他动画可以使用,所有动画均带手势
* 动画效果有三种:Push,Float,Swipe,支持上下左右四个方向
* 如果使用webstrom的话,可以点进去看下源码,或者看我附上的文章
*/
configureScene={(route)=> {
var config;
//先判断一下传入页面是否自己定义了转场动画
if (route.sceneConfig) {
config = route.sceneConfig;
} else {
config = Navigator.SceneConfigs.HorizontalSwipeJump;
}
//禁用config中的手势返回,否则会导致页面可以左右滑动
config.gestures = null;
return config;
}} //这里需要注意,Navigator一经初始化后,就可以多处使用,整个工程维持一个就好了
renderScene={(route, navigator)=> {
let Component = route.component;
return <Component {...route.params} navigator={navigator}/>
}}
/>
);
MainPage.js
render() {
return (
<TabNavigator
tabBarStyle={MainPageStyle.tab_container}
tabBarShadowStyle={{height: 0}}>
{this._renderTabItem(SELECTED_TAG, SELECTED_TITLE, SELECTED_NORMAL, SELECTED_FOCUS)}
{this._renderTabItem(EXPLORE_TAG, EXPLORE_TITLE, EXPLORE_NORMAL, EXPLORE_FOCUS)}
{this._renderTabItem(FOLLOW_TAG, FOLLOW_TITLE, FOLLOW_NORMAL, FOLLOW_FOCUS)}
{this._renderTabItem(PROFILE_TAG, PROFILE_TITLE, PROFILE_NORMAL, PROFILE_FOCUS)}
</TabNavigator>
)
} /**
* 渲染tab中的item
* @param tag
* @param title
* @param iconNormal
* @param iconFocus
* @param pageView
* @returns {XML}
* @private
*/
_renderTabItem(tag, title, iconNormal, iconFocus) {
return (
<TabNavigator.Item
selected={this.state.selectedTab === tag}
title={title}
titleStyle={MainPageStyle.tab_title}
selectedTitleStyle={MainPageStyle.tab_title_selected}
renderIcon={() => <Image source={iconNormal} style={MainPageStyle.tab_icon}/>}
renderSelectedIcon={() => <Image source={iconFocus} style={MainPageStyle.tab_icon}/>}
onPress={() => this.setState({selectedTab: tag})}>
{this._createContentPage(tag)}
</TabNavigator.Item>
)
}
开源代码分析-react-native-eyepetizer的更多相关文章
- Facebook 开源安卓版 React Native,开发者可将相同代码用于网页和 iOS 应用开发
转自:http://mt.sohu.com/20150915/n421177212.shtml Facebook 创建了React Java 库,这样,Facebook 的工程团队就可以用相同的代码给 ...
- 开源代码分析之Android/iOS Hybrid JSBridge框架
Hybrid开发是现在的主流形式,对于业务快速迭代的公司尤其重要.曾将在鞋厂接触了很多关于Hybrid的理念,在这里分享一些Hybrid框架思想. Hybrid框架包括Native与H5的通信,Web ...
- 开源代码分析工具 good
checkstyle - static code analysis tool for JavaPMD - A source code analyzer
- React Native 入门到原理(详解)
抛砖引玉(帮你更好的去理解怎么产生的 能做什么) 砖一.动态配置 由于 AppStore 审核周期的限制,如何动态的更改 app 成为了永恒的话题.无论采用何种方式,我们的流程总是可以归结为以下三部曲 ...
- React Native 从入门到原理
React Native 是最近非常火的一个话题,介绍如何利用 React Native 进行开发的文章和书籍多如牛毛,但面向入门水平并介绍它工作原理的文章却寥寥无几. 本文分为两个部分:上半部分用通 ...
- 使用React Native来撰写跨平台的App
React Native 是一个 JavaScript 的框架,用来撰写实时的.可原生呈现 iOS 和 Android 的应用.其是基于 React的,而 React 是 Facebook 的用于构建 ...
- 关于React Native 火热的话题,从入门到原理
本文授权转载,作者:bestswifter(简书) React Native 是最近非常火的一个话题,介绍如何利用 React Native 进行开发的文章和书籍多如牛毛,但面向入门水平并介绍它工作原 ...
- ReactJs和React Native的那些事
介绍 1,React Js的目的 是为了使前端的V层更具组件化,能更好的复用,它能够使用简单的html标签创建更多的自定义组件标签,内部绑定事件,同时可以让你从操作dom中解脱出来,只需要操作数据就会 ...
- ReactJs和React Native的联系和差异
1,React Js的目的 是为了使前端的V层更具组件化,能更好的复用,它能够使用简单的html标签创建更多的自定义组件标签,内部绑定事件,同时可以让你从操作dom中解脱出来,只需要操作数据就会改变相 ...
随机推荐
- LUOGU P1084 疫情控制(二分+贪心+树上倍增)
传送门 解题思路 比较神的一道题.首先发现是最小值问题,并且具有单调性,所以要考虑二分答案.其次有一个性质是军队越靠上越优,所以我们要将所有的军队尽量向上提,这一过程我们用倍增实现.发现这时有两种军队 ...
- hibernate_04_hibernate多对多的关系映射
1.实体类的多对多的关系映射 一个用户可以有多个角色 User.java public class User { private Long user_id; private String user_c ...
- 在ubuntu下编写python
一般情况下,ubuntu已经安装了python,打开终端,直接输入python,即可进行python编写. 默认为python2 如果想写python3,在终端输入python3即可. 如果需要执行大 ...
- day 62 Django基础之jQuery操作cookie
Django基础之jQuery操作cookie jquery之cookie操作 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery. ...
- openstack实战部署
简介:Openstack系统是由几个关键服务组成,他们可以单独安装,这些服务根据你的云需求工作在一起,这些服务包括计算服务.认证服务.网络服务.镜像服务.块存储服务.对象存储服务.计量服务.编排服务和 ...
- python 安装bs4
1, 下载地址https://www.crummy.com/software/BeautifulSoup/#Download ------------------------------------- ...
- Java工具类NumberUtils使用
int数据类型和long数据类型 int占32位,long占64位,long表示的数据更大:public static int toInt(String str) NumberUtils.toInt( ...
- 【期望DP】[UVA1498] Activation
显然是概率DP 我们用dp[i][j]表示队伍中有i个人,lyk的小迷妹现在排在j这个位置时的概率大小 不难列出下列转移方程: (显然已经排到前面k个位置的时候是要加上爆炸也就是p4的概率的) $$f ...
- DOM节点的创建、插入、删除
值得注意的是:节点的创建.插入以及删除都是操作父级容器.(1)创建var newDiv = documnet.createElement('div'); ——创建的元素只能操作一次 (2)插入/追加a ...
- 8年前诞生于淘宝,细数阿里云RPA 的前世今生!
9月10日,踏入55岁的马云正式卸任阿里巴巴董事局主席一职,由阿里巴巴集团CEO张勇接任.公寓创业.西湖论剑.美国敲钟,从成立到登顶中国最值钱的公司,阿里巴巴只用了20年. 阿里云RPA,2011年诞 ...