学习本系列内容须要具有必定 HTML 开发基础,没有基础的朋友能够先转至 HTML快速入门(一) 学习react
本人接触 React Native 时间并非特别长,因此对其中的内容和性质了解可能会有所误差,在学习中若是有错会及时修改内容,也欢迎万能的朋友们批评指出,谢谢算法
文章初版出自简书,若是出现图片或页面显示问题,烦请转至 简书 查看 也但愿喜欢的朋友能够点赞,谢谢react-native
ViewDidLoad
来初始化,在React Native中又是在哪里?这边从文档中截取的一张图并注释了下,很好地描述了React Native组件的执行顺序实例化阶段、存在阶段、销毁阶段
),其中最常接触的为实例化阶段,这个阶段负责组件的构建和展现的时间,须要咱们根据几个函数的调用过程,控制好组件的展现和逻辑处理getDefaultProps:该函数用于初始化一些默认属性,一般会将固定的内容放在这个函数中进行初始化和赋值网络
this.props
获取在这里初始化它的属性,因为组件初始化后,再辞使用该组件不会调用 getDefaultProps
函数,因此组件本身不能够修改props,只可由其余组件调用它时再外部进行修改getInitialState:该函数用于对组件一些状态进行初始化数据结构
this.setState
来修改state值var SMZQ = React.createClass({ // 用于设置一些值固定不变或上下界面值传递 getDefaultProps(){ return{ number1: 1, number2: 2 } }, // 用于设置一些可变或者用来刷新界面 getInitialState(){ return{ sum:0 } }, render() { return ( <View style={styles.container}> <Text>number1:{this.props.number1}</Text> <Text>number2:{this.props.number2}</Text> <Text>sum:{this.state.sum}</Text> <TouchableOpacity onPress={() => {this.setState({sum: this.props.number1 + this.props.number2})}} > <Text>计算和</Text> </TouchableOpacity> <TouchableOpacity onPress={() => {this.setState({sum: this.state.sum + 1})}} > <Text>和的基础上+1</Text> </TouchableOpacity> </View> ); } });
效果:
框架
this.setState
方法,组件必定会调用render方法,对组件进行再次渲染,不过,React框架会根据DOM的状态自动判断是否须要真正渲染componentWillMount:至关于OC中的 ViewWillAppear
方法,在组件简要被加载到视图以前调用,没有太多的功能异步
render:它是每一个组件必需具有的方法,本质上是个函数,而且返回JSX或者其余组件来构成DOM,和Android的XML布局相似函数
componentDidMount:在调用了render方法,组件加载成功并被成功渲染出来以后,所要执行的后续操做,通常都会在这个函数中进行,好比常常要面对的网络请求等加载数据操做布局
this.state:开发中,组件确定要与用户互动,React的一大创新就是将组件当作一个状态机,一开始有一个初始状态,而后用户互动,致使状态变化,从而触发从新渲染UI,举个例子性能
var SMZQ = React.createClass({ // 用于设置一些可变或者用来刷新界面 getInitialState(){ return{ isPositive: true, content:'5是否是负数' } }, render() { return ( <View style={styles.container}> <TouchableOpacity onPress={() => {this.dealWithState(this.state.isPositive, 5)}} > <Text>{this.state.content}</Text> </TouchableOpacity> </View> ); }, dealWithState: function (data:Boolean, num:int) { var isPositive, content; if (num > 0){ isPositive = false; content = '值不是负数'; }else { isPositive = true; content = '值是负数'; } this.setState({ isPositive: isPositive, content: content }); } });
效果:
获取真实的DOM节点
var SMZQ = React.createClass({ render() { return ( <View ref="mainView" style={styles.container}> <TouchableOpacity onPress={() => {this.dealWithState()}} > <Text>值</Text> </TouchableOpacity> <TextInput ref="mytextInput"></TextInput> </View> ); }, dealWithState: function () { // 让输入框得到焦点 this.refs.mytextInput.focus(); // 查看内容属性 console.log(this.refs.mainView); } });
效果: