前言

本系列是基于React Native版本号0.44.3写的,相信大家看了本系列前面两篇文章之后,对于React Native的代码应该能看懂一点点了吧。本篇文章将带着大家来认识一下React Native的项目结构。由于之前的项目被我们改动了很多,因此,这里我们重新创建一个项目。

初始化 React Native 工程

  • 自动创建 iOS/Android 工程和对应的JS文件,index.iOS.js,index.android.js
  • 并且通过npm加载package.json里面的依赖库到node_modules文件夹中

终端执行以下命令行:

react-native init RNDemoOne --version 0.44.3

打开iOS工程,查看 Appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation; // 获取js文件url
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; // 加载控件
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"RNDemoOne" initialProperties:nil launchOptions:launchOptions]; rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; // 创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new]; // 设置窗口根控制器
rootViewController.view = rootView;
self.window.rootViewController = rootViewController; // 显示主窗口
[self.window makeKeyAndVisible];
return YES;
}
  • 加载控件方法:(initWithBundleURL: moduleName: initialProperties: launchOptions:)中的moduleName不能随便写,必须跟js中注册的模块名字一致。

查看index.ios.js

我是使用的webStormwebStorm代码提示

iOS程序一启动,就会去加载这个文件,去创建组件,并且把加载完的组件显示到界面

index.ios.js 实现步骤

  1. 因为需要用到JSX,所以需要加载React模块;需要用到里面Component组件,所以需要加载Component
  2. 加载AppRegistry,StyleSheet,Text,View原生组件,它们都在react-native文件夹里面。
  3. 自定义组件,作为程序入口组件。
  4. 创建样式表。
  5. 注册组件,程序入口,程序一启动就会自动加载注册组件。

React Native语法

我们已经创建过两个React Native(简称RN)项目了,可能大部分同学看RN代码感到头疼的事情是,不知道什么时候使用{},什么时候使用()。因此,我在这里为大家做个简单的总结,如果发现有不对的地方,欢迎纠正。

  • RN中,使用表达式的时候用{}包住

    style={styles.container}
  • RN中,在字符串中使用变量的时候用{}包住

    var str = "scott"
    <Text>{str}</Text>
  • RN中,对象,字典需要用{}包住

    <View style={{flex:1}}></View>

    {flex:1}是一个字典

  • RN中,创建组件必须要用()包住,因此在返回组件的时候,需要用()

    render(){
    return (
    <View style=styles.container>
    </View>
    )
    }

致谢

如果发现有错误的地方,欢迎各位指出,谢谢!

React Native 系列(三) -- 项目结构介绍的更多相关文章

  1. React Native 系列(三)

    前言 本系列是基于React Native版本号0.44.3写的,相信大家看了本系列前面两篇文章之后,对于React Native的代码应该能看懂一点点了吧.本篇文章将带着大家来认识一下React N ...

  2. .NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI

    作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计.那如何套用呢?今天 ...

  3. 【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

    http://blog.csdn.net/xiaominghimi/article/details/51586492 一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要.那么Himi先讲解R ...

  4. 上门洗车APP --- Androidclient开发 之 项目结构介绍

    上门洗车APP --- Androidclient开发 之 项目结构介绍 前言 尽管公司项目较紧,但还是抽空给大家继续更新. o_O"~ 欢迎大家的关注,非常高兴和大家共同学习.前面给大家分 ...

  5. SpringBoot项目结构介绍

    一项目结构介绍 springboot框架本身对项目结构并没有特别的要求,但是按照最佳的项目结构可以帮助我们减少可能遇到的错误问题.结构如下: (1)应用主类SpringbootApplication应 ...

  6. React Native 学习(三)之 FlexBox 布局

    React Native 学习(三)之 FlexBox 布局

  7. React Native 系列(九) -- Tab标签组件

    前言 本系列是基于React Native版本号0.44.3写的.很多的App都使用了Tab标签组件,例如QQ,微信等等,就是切换不同的选项,显示不同的内容.那么这篇文章将介绍RN中的Tab标签组件. ...

  8. React Native 系列(九)

    前言 本系列是基于React Native版本号0.44.3写的.很多的App都使用了Tab标签组件,例如QQ,微信等等,就是切换不同的选项,显示不同的内容.那么这篇文章将介绍RN中的Tab标签组件. ...

  9. React Native 系列(一) -- JS入门知识

    前言 本系列是基于React Native版本号0.44.3写的,最初学习React Native的时候,完全没有接触过React和JS,本文的目的是为了给那些JS和React小白提供一个快速入门,让 ...

随机推荐

  1. kubernetes入门(06)kubernetes的核心概念(3)

    一.API 对象 API对象是K8s集群中的管理操作单元.K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作.例如副本集Replica Set对应的A ...

  2. ssh整合之一spring的单独运行环境

    这是本人第一次写博客,不足之处,还希望各位园友指出,在此先谢谢各位了! 先说我们的这三大框架,即struts,spring,hibernate,我们要进行整合的话,第一步是先单独搭建我们的Spring ...

  3. java子类重写父类的要点

    子类不能重写父类的静态方法,私有方法.即使你看到子类中存在貌似是重写的父类的静态方法或者私有方法,编译是没有问题的,但那其实是你重新又定义的方法,不是重写.具体有关重写父类方法的规则如下:重写规则之一 ...

  4. 云+社区技术沙龙:Kafka meetup 深圳站报名开启

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 如果说 2018 年是技术大爆炸年,那么 Apache Kafka 绝对是其中闪亮的新星. 自Kafka 从首发之日起,已经走过了快八个年头 ...

  5. 其实你并不懂如何定义一个 PHP 函数

    <?php function divide($dividend, $divisor){ return $dividend / $divisor; } echo divide(12, 4); ec ...

  6. Python/MySQL(一、基础)

    Python/MySQL(一.基础) mysql: MYSQL : 是用于管理文件的一个软件 -socket服务端 (先启动) -本地文件操作 -解析 指令[SQL语句] -客户端软件 (各种各样的客 ...

  7. 03、NetCore2.0下Web应用之搭建最小框架

    03.NetCore2.0下Web应用之搭建最小框架 这里我们不使用VS2017或者CLI命令的方式创建Asp.Net Core 2.0网页应用程序,而是完全手工的一点点搭建一个Web框架,以便更好的 ...

  8. Swing图层的应用——实现tooltip显示

    没有错是世纪前的swing. 在使用Swing的时候有个问题一直没有解决,就是Swing自带的tooltip不会跟随鼠标进行移动,而且移动到边界就会遮挡的问题.JCompoent有个createToo ...

  9. 误删除AUD$所在的表空间,无法切换用户

    问题故障:数据库Open,无法切换普通用户: ---递归SQL无法执行   SQL> conn hr/hr ERROR at line 1: ORA-00604: error occurred  ...

  10. django实现model中choices类型字段,后台自由配置

    该功能主要试用于项目中有大量需要动态配置的字典字段,字典建议做缓存处理. 定义字典类型表,字典值两张表 2.配置对应的字典值 3.重写model的init方法,动态赋值choice 4.列表界面效果 ...