前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React Native 系列(三) -- 项目结构介绍

React Native 系列(三) -- 项目结构介绍

作者头像
Scott_Mr
发布2018-05-16 16:25:31
1.2K0
发布2018-05-16 16:25:31
举报

前言

本系列是基于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文件夹中

终端执行以下命令行:

代码语言:javascript
复制
react-native init RNDemoOne --version 0.44.3

打开iOS工程,查看 Appdelegate.m

代码语言:javascript
复制
- (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中,创建组件必须要用()包住,因此在返回组件的时候,需要用()

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 初始化 React Native 工程
  • 打开iOS工程,查看 Appdelegate.m
  • 查看index.ios.js
    • index.ios.js 实现步骤
    • React Native语法
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档