您的位置:首页 > Web前端 > React

ReactNative组件的生命周期

2016-05-04 00:00 239 查看
摘要: 研究ReactiveNative有一段时间了,个人觉得了解一下它组件的生命周期还是非常有必要的,本篇博客是我查找了一些资料并且融合了自己的一些总结,如果有错误的地方还请欢迎指正。

与iOS手机开发类似,一个ReactNative组件的生命周期分为实例化,存在期和销毁期,这几个周期也是由对应的几个方法来控制的。

I.组件的实例化期

getDefaultProps:实例化的时候会调用该方法,以后便不在调用。

getInitialState:初始化状态值,用来改变组件的状态。

componentWillMount:组件将要被加载的时候调用该方法。(类比viewWillAppear)

render:渲染组件的时候会调用该方法,这个是必须得有的方法。

componentDidMount:组件加载完并且渲染完成的时候会调用该方法。
注:以上的方法,在实例化一个对象的时候会依次调用,如果该对象没有被销毁,再次被调用的时候是不会调用第一步的方法,而是从第二步开始依次调用上面的方法。

这里,我来整理一下没个方法的具体作用。

getDefaultProps:在这里会初始化一些默认的属性,通常会将固定的内容放在这个过程中进行初始化和赋值,一个控件可以利用this.props获取在这里初始化的属性,由于组件初始化后,再次使用该组件不会调用getDefaultProps方法,所以组件自己不可以修改props,只可有其他组件调用它的时候在外部修改。

getInitialState:在这里是对控件的一些状态进行初始化,由于该方法跟getDefaultProps不一样,如果该控件未销毁,下次调用该控件的时候还会调用这个方法。所以可以将控制控件的状态的一些变量放在这里初始化。比如控件上面显示的文字,可以通过this.state来获取值,通过this.setState来修改state值。在这里要注意,一旦调用了this.setState方法,控件必将调用render方法,对控件进行再次的渲染,不过,如果React框架会自动根据DOM的状态来判断是否需要真正的渲染。

componentWillMount:对比viewWillAppear,这个方法在组件将要被加载在视图上之前调用,也就是说,render一个组件前最后一次修改state的机会。

render:render是一个组件必须有的方法,形式为一个函数,并返回JSX或其他组件来构成DOM,和安卓的XML布局,WPF的SAML布局类似,只能返回一个顶级元素。同时,在render函数中,只可通过this.state和this.props来访问在之前函数中初始化的数据值。

componentDidMount:即调用了render方法后,组件加载成功并被成功渲染出来以后所执行的hook函数,一般会将网络请求等加载数据的操作,放在这个函数里进行,来保证不会出现UI上的错误

II.组件的存在期

存在期主要是用来处理与用户的交互,如:点击事件,具体有以下几个过程:

componentWillReceiveProps:指父元素对组件的props或state进行了修改

shouldComponentUpdate:一般用于优化。可以返回false或true来控制是否进行渲染。

componentWillUpdate:组件刷新前调用,类似componentWillMount

componentDidUpdatae:更新后的hook

III.销毁期

用于清理一些无用的内容,如:点击事件Listener,只有一个过程:componentWillUnmount

以上这些是我看了一些资料自己总结出来的,肯定会有不完善的地方,如果各位看官想了解更多,可以点击下面的链接。

http://blog.csdn.net/daleiwang/article/details/50669260

http://www.oschina.net/translate/getting-started-with-react
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息