转载链接:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/react-native-foundation-course/

React-native是Facebook的开源项目,它的口号是"Learning once,write anywhere",目的是统一的View的编写。

一、React-Native基本语法模板

'use strict';  =====>(严格模式)

var React = require('react-native');   =====>(导入模块react-native,关键字是: require)

var {

AppRegistry,

StyleSheet,     =====>(声明要用到得系统组件)

Text,

View,

} = React;

var FirstApp = React.createClass({   =====>(创建组件名称是:FirstApp, 关键字是createClass)

render: function() {   =====>(渲染方法, 组件中必须得方法)

return (

<View style={styles.container}>=====>(这几行就是JSX语法写的)

                                              <Text style={{fontSize: 18}}>这是我的第一个React Native APP</Text>   =====>(显示在手机屏幕上的内容在这写)

</View>=====>(这里用view包起来,而不是用div)

);

}

});

var styles = StyleSheet.create( =====>(创建样式,看上面加粗划线的代码,可以在这里定义,也可以直接写在代码里面,如上面的fontSize:18)

container: {

flex: 1,

justifyContent: 'center',

alignItems: 'center',

backgroundColor: 'orange'

}

});

AppRegistry.registerComponent('FirstApp', () => FirstApp);   =====>(注册应用,使能够加载运行, FirstApp就是你的App名称)

module.exports = FirstApp; =====>(导出组件,使能够在别的组件中用)

二、React-native的 组件化,我们可以把你需要的分功能自定义米快写代码,然后把所有的模块组合起开,就是一个完整的程序(这样子写代码看起比较清晰)

代码如下所示:

'use strict';

var React=require('react-native');

var {

AppRegistry,

StyleSheet,

Text,

View

}=React;

var FirstApp=React.createClass({

render:function(){

<View style={styles.container}>

<HelloWorld myText='我是第一'/>

<HelloWorld myText='我是第二'/>==>(这里引用了下一个组件,HelloWorld自动成为FiirstApp的子组件)

<HelloWorld myText='我是第三'/>

</View>

}

});

var HelloWorld=React.createClass({

render:function(){

return (

<View>

<Text style={{fontSize:20,color:'red'}}>{this.props.myText}</Text>

=====>(从父组件传过来的myText属性,用this.props.myText接收)

</View>

)

}

})

三、React-Native生命周期

a、getInitialState: 在组建被挂载之前调用,我们一般在里面定义初始state值

   b、getDefaultProps: 在组件类创建的时候调用一次,然后返回值被缓存下来。如果父组件没有指定 getDefaultProps 中定义的属性,则此处返回的对象中的相应属性将会合并到 this.props

  c、componentWillMount: 服务器端和客户端都只调用一次,在初始化渲染执行之前立刻调用

  d、render: 执行视图的渲染操作

  e、componentDidMount: 在初始化渲染执行之后立刻调用一次,仅客户端有效(服务器端不会调用)

f、componentWillUnmount: 组件从DOM中移除时调用,一般在次方法进行必要的清理工作

组件的执行顺序示例:

'use strict';

var React = require('react-native');

var {

AppRegistry,

StyleSheet,

Text,

View,

} = React;

var FirstApp = React.createClass({

getDefaultProps: function() {

console.log('getDefaultProps');

},

getInitialState: function() {

console.log('getInitialState')

return { };

},

componentWillMount: function() {

console.log('componentWillMount');

},

componentDidMount: function() {

console.log('componentDidMount');

},

componentWillUnmount: function() {

console.log('componentWillUnmount');

},

ender: function() {

console.log('render');

return (

<View style={styles.container}>

<HelloWorld myText='我是第一' />

<HelloWorld myText='我是第二' />

<HelloWorld myText='我是第三' />

</View>

);

}

});

var HelloWorld = React.createClass({

render: function() {

return (

<View>

<Text style={{fontSize: 20, color: 'red'}}>{this.props.myText}</Text>

</View>

);

}

});

var styles = StyleSheet.create({

container: {

flex: 1,

justifyContent: 'center',

alignItems: 'center',

backgroundColor: 'orange'

}

});

AppRegistry.registerComponent('FirstApp', () => FirstApp);

module.exports = FirstApp;

react-native基础教程(1)的更多相关文章

  1. React Native基础&入门教程:初步使用Flexbox布局

    在上篇中,笔者分享了部分安装并调试React Native应用过程里的一点经验,如果还没有看过的同学请点击<React Native基础&入门教程:调试React Native应用的一小 ...

  2. React Native入门教程2 -- 基本组件使用及样式

    在上一篇文章中,我们学会了如何搭建React Native的环境(React Native入门教程(笔记) 1 – 开发环境搭建),不知道你们是否搭建好了呢,如果还没有,那么快动起小手,来体验RN带给 ...

  3. React Native入门教程 3 -- Flex布局

    上一篇文章中介绍了基本组件的使用 React Native入门教程(笔记) 2 – 基本组件使用及样式 本节内容将继续沿用facebook官方例子介绍如何使用Flexbox布局把界面设计的多样化. 转 ...

  4. React Native入门教程 1 -- 开发环境搭建

    有人问我为啥很久不更新博客..我只能说在学校宿舍真的没有学习的环境..基本上在宿舍里面很颓废..不过要毕业找工作了,我要渐渐把这个心态调整过来,就从react-native第一篇博客开始.话说RN也出 ...

  5. react native基础与入门

    react native基础与入门 一.react native 的优点 1.跨平台(一才两用) 2.低投入高回报 (开发成本低.代码复用率高) 3.性能高:拥有独立的js渲染引擎,比传统的h5+ w ...

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

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

  7. React Native基础&入门教程:调试React Native应用的一小步

    React Native(以下简称RN)为传统前端开发者打开了一扇新的大门.其中,使用浏览器的调试工具去Debug移动端的代码,无疑是最吸引开发人员的特性之一. 试想一下,当你在手机屏幕按下一个按钮, ...

  8. 跨平台框架与React Native基础

    跨平台框架 什么是跨平台框架? 这里的多个平台一般是指 iOS 和 Android . 为什么需要跨平台框架? 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平 ...

  9. React Native基础&入门教程:以一个To Do List小例子,看props和state

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在上篇中,我们介绍了什么是Flexbox布局,以及如何使用Flexb ...

  10. React Router基础教程

    React是个技术栈,单单使用React很难构建复杂的Web应用程序,很多情况下我们需要引入其他相关的技术 React Router是React的路由库,保持相关页面部件与URL间的同步 下面就来简单 ...

随机推荐

  1. Cookie/Session机制详解(转载)

    原文链接:http://blog.csdn.net/fangaoxin/article/details/6952954 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用 ...

  2. (并发编程)线程 (理论-创建-lock-属性-守护,与进程的对比)

    一.线程理论1.什么是线程   线程指的是一条流水线的工作过程(执行代码)   进程不是执行单位,是资源单位   一个进程内自带一个线程,线程是执行单位 2.进程VS线程    1.同一进程内的线程们 ...

  3. jq中Deferred对象的使用

    var d=$.Deferred(); //deferred下面的方法有: // ["resolve", "resolveWith", "reject ...

  4. Java中的钩子方法

    钩子方法是啥 钩子顾名思义就是用来挂东西的.那么要挂东西必须有个被挂的东西,要不就是铁环.要不就是墙的边沿.所以要能挂住东西必须要有个被勾住的铁环,要一个钩子.那么在java中也是同样的原理,你首先需 ...

  5. php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)

    1.电子邮件地址的校验 <?php /* 校验邮件地址*/ function checkMail($email) { //用户名,由“w”格式字符.“-”或“.”组成 $email_name= ...

  6. Zookeeper单机安装部署与配置(二)

    在上篇博客中简单介绍了Zookeeper的特点和应用场景,详情可参考:<Zookeeper简介(一)>,那么这篇博客我们介绍一下关于Zookeeper的单机模式安装步骤与配置. 环境准备 ...

  7. 将eclipse的maven项目导入到intellij idea中

    最近项目中需要用到idea,需要将原来的eclipse项目进行转移.捣鼓了半天终于成功了,在这里和大家分享下,希望对大家有所帮助,如有错误,欢迎指正. idea的确是一款很智能的开发工具,真的是爱不释 ...

  8. python 全栈开发,Day106(结算中心(详细),立即支付)

    昨日内容回顾 1. 为什么要开发路飞学城? 提供在线教育的学成率: 特色: 学,看视频,单独录制增加趣味性. 练,练习题 改,改学生代码 管,管理 测,阶段考核 线下:8次留级考试 2. 组织架构 - ...

  9. LINQ学习之旅 C#3.0新特性(一)

    一:C#3.0新语言的特性 自动属性(Auto-Implemented Properties) 隐含类型局部变量(Local Variable Type Inference) 匿名类型(Anonymo ...

  10. Spring AOP 入门实例详解

    目录 AOP概念 AOP核心概念 Spring对AOP的支持 基于Spring的AOP简单实现 基于Spring的AOP使用其他细节 AOP概念 AOP(Aspect Oriented Program ...