开源代码分析-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中解脱出来,只需要操作数据就会改变相 ...
随机推荐
- 运用shtml类型文件,实现项目页面的分割。
学过动态网页,如asp.php的人知道如何去引用网站头部.底部文件包含.例如在php中有一个方法:include();这个方法能在当前文档中引入外部文件,从而方便网站的开发和维护,然而html静态文件 ...
- C#winfrom listview 设置显示图片
ListView控件有5种显示图片方式:LargeIcon(大图标),Detail(详细),SmallIcon(小图标),List(列表),Tile,常用前4种. 这里说一下设置方式:LargeIc ...
- Eclips安装STS(Spring Tool Suite (STS) for Eclipse)插件
Spring Tool Suite(sts)就是一个基于Eclipse的开发环境, 用于开发Spring应用程序.它提供了一个现成的使用环境来实现, 调试, 运行, 和部署你的Spring应用程序.包 ...
- 5.1_Spring Boot2.x安装Docker
1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker 是一个开源的应用容器引擎,基于Go 语言并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用 ...
- 面试系列12 redis和memcached有什么区别
(1)redis和memcached有啥区别 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcached ...
- java_日历类
calendar是日历类,该类是抽象类不能被实例化 public class CalendarTest { /* 创建对象和方法的使用 */ public static void main(Strin ...
- MFC入门--显示静态图片及调用本地软件
MFC是微软开发的基础类库,主要用来开发图形界面应用程序,在学习中,我们要验证算法好坏,一般需要对结果进行可视化. OpenCV是计算机视觉中的开源算法库,集成了很多先进算法,现在想将MFC与Open ...
- JS数组 组团(如何创建数组)var mychar = new Array( )
组团,并给团取个名(如何创建数组) 使用数组之前首先要创建,而且需要把数组本身赋至一个变量.好比我们出游,要组团,并给团定个名字"云南之旅". 创建数组语法: var myarra ...
- Python全栈开发:web框架们
Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. 1 2 3 ...
- 在github上怎样克隆vue项目及运行
长时间不做vue项目,今天看vue项目运行时有些指令忘记了,在这里写下相关指令 .克隆已有项目,一般情况项目中的README.md写的是项目运行步骤,一般项目的运行如下 克隆项目 git clone ...