react-native学习小结

目录

一、prop,state,ref

二、React组件思想

三、react-native的两种写法:ES5(有时会遇到)、ES6(推荐写法)

一、prop,state,ref

1.ref:引用一个组件(是从render中返回该组件实例)

2.props:组件中的属性,

2.1常用于跳转页面的传值:this.props.navigator.push({component:xxx,id:this.props.id})

2.2不同组件之间传值

2.3子组件向父组件传值

3.state:组件中的状态

父组件向子组件传值

二、react-native组件思想

react-native的组件其实是采用的react的组件思想,所以强烈推荐先把react给看了

react-native组件,最重要的就是组件生命周期(安卓开发的View也有生命周期一说):

(这里是网上盗图,要不要负责的呢- -!)

生命周期函数:

(1)getDefaultProps  实例化调用,以后不再调用,确定默认属性props

(2)getInitialState初始化状态state,常用于改变组件状态

(3)componentWillMount组件将被加载前,可最后一次初始化状态

(4)componentDidMount组件被加载后,常用于交互,如设置计时setTimetou或者setInterval,或者发起网络请求

(5)componentWillUpdate组件刷新前调用

(6)componentDidUpdate组件刷新后

(7)componentWillUnMount组件卸载,用于清除计时,监听

(8)componentWillReceiveProps重新渲染时,调用此此组件,可对子组件props或state进行修改

(9)shouldComponentUpdate判定是否需要重新渲染组件

运行经过:

这里梳理一下运行经过,组件一开始由(1)确定默认属性this.props,由(2)初始化this.state,到组件加载前即(3)时,一般在这时加入监听addListener,以及加入过场动画,然后render进行渲染,到(4)表示组件加载完成,接着组件进入运行状态

组件在运行中,有以下几种情况:

1.直接结束,到达(7)表示组件即将卸载销毁,一般这时候销毁监听removeAllListeners

2.状态state改变,到达(9)组件判断是否重新渲染时调用,是根据你的state状态有没有改变页面判定(有兴趣可深入了解(9)提高组件判定效率从而提升组件效率)

2.1不重新渲染,回到组件运行状态

2.2重新渲染,进入(5)组件即将更新,然后render渲染,所有state更新并改变界面,进入(6)组件更新完毕然后进入运行状态

3.又或者默认属性props改变,和状态state改变一样的流程,进行判定

三、react-native的两种写法

1.ES 5(类似commonJS的模块导入)

//导入React包  

var React = require ("react");  

var {Component, PropTypes} = React;  

//导入ReactNative包  

var ReactNative = require ("react-native");  

var { Image, Text,} from ‘react-native‘;  

//导入其他组件  

var MyComponent = require(‘./MyComponent‘);  

//定义组件  

var TestComponent = React.creatClass({   

//ES5组件内的函数都是XXX:function(){}形式   

//默认属性   

  getDefaultProps:function(){   

return (   

      testProp1: 123,   

      testProp2: false,   

    );   

  },//ES5 函数以逗号结尾   

//属性类型   

  propTypes:{   

    testProp1: React.PropTypes.number.isRequired,   

    testProp2: React.PropTypes.bool,   

    testProp3: React.PropTypes.array,  

  },   

//初始化状态   

  getInitialState:function(){   

return {   

      stateValue: this.props.stateValue,   

    },//ES5 函数以逗号结尾   

  componentWillMount:function(){},   

  componentWillUnmount:function(){},   

//渲染   

  render:function(){   

return(   

      <View></View>   

    );   

  }//结尾函数既没有分号也没有逗号});  

};  

//表示组件可引用  

module.exports = TestComponent;  

2.ES  6

//导入React包  

import React,{Component,PropTypes}  from ‘react‘;  

//导入ReactNative包  

import {  

  Image,  

  Text,  

} from ‘react-native‘;  

//调用其他组件  

import MyComponent from ‘./MyComponent‘;  

//定义组件(export default表示可引用)  

(export default) class TestComponent extends Component{  

//默认属性  

static defaultProps = {  

    testProp1: 123,  

    testProp2: false,  

  };//分号结尾  

//属性类型  

static propTypes = {  

    testProp1: React.PropTypes.string.isRequired,  

    testProp2: React.PropTypes.object,  

    testProp3: React.PropTypes.func,  

  };//以分号结尾  

//初始化状态  

  constructor(props){  

super(props);  

this.state = {  

      stateValue: this.props.stateValue,  

    };  

  }//ES6 函数结尾既没有分号也没有逗号  

  componentWillMount(){}  

  componentWillUnmount{}  

//渲染  

  render:function(){  

return(  

      <View></View>  

    );  

  }  

};  

//表示可引用组件  

import TestComponent from ‘./TestComponent‘; 
时间: 2024-08-28 09:41:25

react-native学习小结的相关文章

react native 学习一(环境搭配和常见错误的解决)

react native 学习一(环境搭配) 首页,按照http://reactnative.cn/docs/0.30/getting-started.html#content上的介绍,下载安装python2.nodejs.git.Android Studio.这里前面两个都比较好装,android studio装起来相当慢,其实应该只用装sdk就行了,安装sdk可以按http://www.androiddevtools.cn/这个里面的方式设个代理. 软件装好了,就是环境变量设置了,添加AND

React Native学习(1):怎么快速学习一门新技术

React Native学习方法论 这是我技术公众号的第一篇文章,也是ReactNative系列文章的第一篇,对我的文章感兴趣的可以加我微信16230091进行关注. 本文表面上讲React Native(以下简称RN),实际上对于学习任何语言和系统都适用. 对于新技术的学习,分为两种,一种是语言,类似Swift.Objective-C.Java.ES6,另一种是系统,比如Android.iOS.前端. 1. 语言层面,如果你精通某一门语言,那么是可以很快切换到另一门语言的.这就是语言的相通性.

React Native学习-将 &#39;screen&#39;, &#39;window&#39; or a view生成图片

https://github.com/facebook/react-native/commit/ac12f986899d8520527684438f76299675dc0daa 这是react-native自带的生成图片的属性,所以使用之前只需要引用UIManager属性即可: View生成图片: state = { uri: null }; takeToImage() { UIManager.takeSnapshot(this.refs.location, {format: 'png', qu

React Native学习笔记(一)Mac OS X下React Native的环境搭建

本文介绍Mac OS X系统下的React Native环境搭建过程. 1.环境要求: 1) Mac OS X操作系统 2) Xcode6.4或以上版本 3) Node.js4.0或以上版本 4) watchman和flow 2.安装过程 1) Node.js的安装可以在Node.js的官网https://nodejs.org/ 中下载最新的版本.这里下载的是node-v4.4.2.pkg版本.直接双击运行安装就可以了.查看是否安装成功可以在终端中输入如下命令: $node -v 如果能够显示版

React Native学习方法论

这是我技术公众号的第一篇文章,也是React Native系列文章的第一篇,对我的文章感兴趣的可以加我微信16230091进行关注. 本文表面上讲React Native(以下简称RN),实际上对于学习任何语言和系统都适用. 对于新技术的学习,分为两种,一种是语言,类似Swift.Objective-C.Java.ES6,另一种是系统,比如Android.iOS.前端. 1. 语言层面,如果你精通某一门语言,那么是可以很快切换到另一门语言的.这就是语言的相通性.翻开市面上那些21天精通某某语言之

React Native学习

学习 首先,假使你已经安装了Nodejs 6,也有使用npm进行Nodejs的包管理 npm install -g react-native-cli 也可以使用yarn作为包管理工具 npm install -g yarn 安装Android Studio 配置系统变量 创建react native 工程 react-native init projectName #projectName是项目名称,可以任意 运行react native 工程 react-native start 运行reac

react native 学习资料整理

入门教程 深入浅出 React Native:使用 JavaScript 构建原生应用 http://www.appcoda.com/react-native-introduction/  中文版 http://www.cocoachina.com/ios/20150408/11513.html react-native 之布局篇 https://segmentfault.com/a/1190000002658374 Flex布局入门 http://www.ruanyifeng.com/blog

Facebook React Native 配置小结

2015 年 9 月 15 号,React Native for Android 发布.至此,React 基本完成了对多端的支持.基于 React / React Native 可以: H5, Android, iOS 多端代码复用 实时热部署 目前使用 React Native 开发只能在 Mac 系统 上进行.所以配置都是基于Mac os. 环境配置 首先需要安装的有: Homebrew(brew): Homebrew 是 Mac 中的一个安装包管理器.没有安装的话,点击这里安装 我的版本如

react native 学习之 native modules

翻译自https://facebook.github.io/react-native/docs/native-modules-ios.html Native Modules 很多情况下,app需要使用原生的api,或者是用一些已经用OC.Swift或C++写好的模块,又或者需要写出更高效率的.或多线程的代码来支撑图像处理.数据库或其它高要求的需求. React Native的设计当然是支持我们使用原生特性的,以使平台本身的能力得以完全发挥.不过这相对来说是比较进阶的功能,他们的存在虽然是必要的,

React Native学习笔记之一

1:运行React Native报连接错误解决 解决方式: 在终端进入项目文件里,然后执行:(cd Pods/React; npm run start) 2:组件生命周期介绍 创建阶段 1. getDefaultProps 作用于组件类,也就是调用React.createClass()的时候被调用. 每次创建组件的时候执行且只执行一次,方式如 reload Js. 用来处理props的默认值. note : 如果在JS文件中定义了一个组件,但是没有使用它,此组件的getDefaultProps也