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
与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
相关文章推荐
- 【转】Airbnb React编码规范
- 如何判断图片(img)是否已经加载成功--基于react
- react native bug
- ReactiveCocoa学习
- React 入门实例教程
- ReactNative准备:环境的创建和应用
- 解决react-native run-android 的时候报错connection time out
- React-Natvie 介绍大全
- React-Native之通信机制
- react+webpack
- React.js生态系统概览
- 突发奇想:消息机制,以及Windows自带控件,都可以到ReactOS里去寻找答案
- React之PropTypes
- ReactNative 入门与探索
- 知识联结梳理 : I/O多路复用、EPOLL(SELECT/POLL)、NIO、Event-driven、Reactor模式
- react初识
- Codeforces 607A Chain Reaction (dp+二分)
- react native 离线ios
- RN(react native)入坑指南-10,组件的生命周期
- reactjs入门一(文字透明度动态改变)