深入浅出React Native 3: 从零开始写一个Hello World

这是深入浅出React Native的第三篇文章。

1. 环境配置

2. 我的第一个应用



将index.ios.js中的代码全部删掉,为什么要删掉呢?因为我们准备从零开始写一个应用~学习技术最好的方式就是自己动手写,看别人的代码一百遍的效果也不如自己写一遍来的效果大~

我们要做的事情主要分成以下两步:

1. 创建组件

2. 将创建好的组件显示在app上

打开index.ios.js文件,输入

var HelloWorld = React.createClass({
  render: function () {
    return (
        <View>
          <Text>
            Hello World
          </Text>
        </View>
      )
  }
});

查找React文档可以看到该createClass的描述

ReactClass createClass(object specification)

通过传入一个描述说明(specification)来创建一个组件类,创建的这个组件类必须实现render这个方法,并且render方法只能返回一个节点,当然该节点可以包含任意多的子节点。

像上面我们创建了一个HelloWorld的组件类,该类实现了render这个方法,该方法只返回<View>这个子节点,当然,在<View>这个节点下还包含了<Text>这个节点。

第一步就完成了,你看,就是这么简单~

下面我们开始第二步。

AppRegistry.registerComponent(‘AwesomeProject‘, function() {
  return HelloWorld;
});

AppRegistry是运行React Native的应用程序的一个入口,一个应用程序的根组件必须通过调用AppRegistry.registerComponent方法将自己注册到应用中,这样原生系统才能正确加载并通过调用AppRegistry.runApplication来运行应用程序。

在我们的项目中,根组件就是我们的HelloWorld,至于第一个参数为什么是AwesomeProject,参看api可以看到

static registerComponent(appKey: string, getComponentFunc: ComponentProvider) 

第一个参数指的是appKey,如果大家还记得的话,我们通过react native命令行生成的项目模板的名字就叫做Awesome~当然这个名字可以改的,至于怎么改,我们以后再说,现在先保持这个名字。

这两件事情做完以后,切换回模拟器,CMD+R刷新(注意,服务器要保持运行状态哦~如果服务器停掉的话,npm start命令,还记得吗~不记得的话请翻看之前的教程哦),咦,怎么神马都没有~当然,也可能界面上出现一大片红色的错误信息~~

打开xcode可以看到其中有一段这样的错误:

系统找不到我们使用的React变量,所以报错了~其实不仅仅React我们没有定义,AppRegistry, View, Text我们都没有定义~所以下面我们要讲React Native定义的这些变量引入~

在index.ios.js文件的最上面添加下述代码~

var React = require(‘react-native‘);
var AppRegistry = React.AppRegistry;
var View = React.View;
var Text = React.Text;

因为AppRegistry, View, Text是React的一个属性,所以引入方式与React不同~

打开模拟器,CMD+R刷新下,就可以看到hello world显示在界面上啦~只是......位置有点点尴尬。

为了让这个显示在中间,我们为其添加一些style~

第一步需要引入StyleSheet变量。在引入变量的最后添加下面的代码:

var StyleSheet = React.StyleSheet;

然后在AppRegistry.registerComponent方法的上面(其实位置无所谓,只需要在引入变量的下面就可以了,之所以写在registerComponent前面,只是为了代码看起来好看些~),添加

var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: ‘center‘,
    alignItems: ‘center‘
  }
});

我们会在后续讲解StyleSheet,现在只需要知道,StyleSheet是一种样式的抽象,类似于CSS。在上述的style中,我们将container定义为水平、垂直居中。

修改HelloWorld组件,为其添加我们设置的样式。

var HelloWorld = React.createClass({
  render: function () {
    return (
        <View style={styles.container}>
          <Text>
            Hello World
          </Text>
        </View>
      )
  }
});

大功告成~在模拟器上刷新,就可以看到Hello World这几个字显示在iphone的中间啦~

时间: 2024-12-28 11:23:30

深入浅出React Native 3: 从零开始写一个Hello World的相关文章

深入浅出React Native 2: 我的第一个应用

这是深入浅出React Native教程的第二篇文章,第一篇为环境配置. React Native环境配好之后,就可以开始创建我们的第一个App啦. 打开控制台,输入 react-native init AwesomeProject 上述命令的作用是在当前文件夹下创建一个名字叫AwesomeProject的项目模板.在运行该命令之前,可以先用cd命令到自己想创建react native的文件夹下. 当然,比较坑的是,执行这个命令会用耗费很长很长的时间,有时候还会出现各种各样的错误,例如,没有权限

深入浅出 React Native:使用 JavaScript 构建原生应用

本篇为联合翻译,译者:寸志,范洪春,kmokidd,姜天意 数月前,Facebook 对外宣布了正在开发的 React Native 框架,这个框架允许你使用 JavaScript 开发原生的 iOS 应用--就在今天,Beta 版的仓库释出了! 基于 PhoneGap 使用 JavaScript 和 HTML5 开发 iOS 应用已经有好几年了,那 React Native 有什么牛的? React Native 真的很牛,让大家兴奋异常的主要原因有两点: 可以基于 React Native使

从零开始写一个Tomcat(叁)--请求解析

挖坑挖了这么长时间也该继续填坑了,上文书讲到从零开始写一个Tomcat(贰)--建立动态服务器,讲了如何让服务器解析请求,分离servlet请求和静态资源请求,读取静态资源文件输出或是通过URLClassLoader找到我们请求的servlet,反射生成对应的实例,调用其service方法,传递初级解析的request和response,完成请求. 这很tomcat,but too simple 阅读本文,你将了解 连接器(connector),处理器(processor)逻辑分离 如何高效的解

从零开始写一个arm下的裸板程序

从零开始写一个arm下的裸板程序.我们整个程序是基于uboot运行的. 所有我们可以借助uboot中的printf来输出,默认开发版的标准输出是串口. 电脑的默认标准输出的屏幕. 1.需要创建的文件由include文件夹,用来存放头文件. 2.创建一个hw.h头文件. 3.编写一个common.h,它定义了借用uboot的printf的宏.和NULL这个宏的定义. 4.hw.c 硬件相关的文件. 5.main.c c文件. 6.start.s 汇编文件. 7.ld.lds 链接脚本, 8.Mak

react学习(二)试写一个例子

一.render方法 参考https://itbilu.com/javascript/react/EJiqU81te.html React的组件最终通过render方法渲染到DOM中,该方法由ReactDOM类库提供.API如下: ReactComponent render( ReactElement element,//需要渲染的元素 DOMElement container,//渲染结果在DOM中插入的位置 [function callback]//渲染完成后的回调函数 ) 二.动手写一个H

从零开始写一个Tomcat(贰)--建立动态服务器

上文书说道如何通过http协议建立一个静态的服务器来访问静态网页,但我们选择tomcat最主要的原因还是因为它能动态的执行servlet,这边文章将引导你实现一个能够运行servlet的服务器,这个简易的服务器符合tomcat的基本原理,但真的tomcat远不是这么简单,即使是15年前的tomcat4. 1.主程序逻辑分离 既然要实现动态的服务器,首先我们要实现模式的识别,在tomcat中,tomcat通过读取web.xml,在servlet的配置中通过url的模式来匹配servlet,我们这里

组装者模式在React Native项目中的一个实战案例

前言 在实际的开发中,如果遇到多个组件有一些共性,我们可以提取一个BaseItem出来,然后在多个组件中进行复用,一种方式是通过继承的方式,而今天我们要说的是另一种方式--组装者模式. 什么是组装者模式? 就是在一个类中封装一些共有特性,然后使得在使用的组件中,可以动态的去添加一些属性或者行为,相比较于继承来说,组装者模式会更加的灵活. 实例演示 /** * AboutCommon.js * 组装者模式 模仿一些生命周期函数 */ export default class AboutCommon

怎么从零开始写一个秒杀项目

一,环境搭建 技术选型,该秒杀项目是采用springboot2.0和springCloud来开发的 1首先搭建父项目,所有的模块都是依赖该父项目 2搭建服务注册中心模块(Eureka) 3秒杀用户模块(集成mybatis,web,thymeleaf等),相当于买家 4公共模块,对应的是数据库表对应的实体类,form表单对应的pojo,工具类等 5商家模块,(集成mybatis,web,thymeleaf等),相当于卖家 6商铺模块,商家入驻后申请商铺 7商品类别模块,商品的层级分类 8商品服务模

react native 开发IOS

转载自kaich blog(http://www.kaich.xyz) 接触 react native 对于技术,我比较喜欢追新.看到报道大名鼎鼎的facebook(开源界的模范,发布了很多高质量的开源框架)开源了移动端跨平台的新框架react native,于是就迫不及待的开始接触它了.react native的目的是为了让前端开发任务能开发移动端(ios程序员相对于web端来说要少得多),于是就有了这样的框架.对于我们IOS程序员有没有必要去学它,看到它另外一个特性:跨平台,而且又一定程度的