2.2.3.3 组件生命周期
- 从图中可以看出,在React Native中,组件的生命周期大致可以分为3个阶段(实例化阶段、存在阶段、销毁阶段),其中最常接触的为实例化阶段,这个阶段负责组件的构建和展示,需要根据几个函数的调用过程,控制好组件的展示和逻辑处理
生命周期函数
1 组件初始化阶段
getDefaultProps:该函数用于初始化一些默认属性,通常会将固定的内容放在这个函数中进行初始化和赋值 在组件中,可以利用 this.props 获取在这里初始化它的属性,由于组件初始化后, getDefaultProps 函数只会被调用一次,所以组件自己不可以修改props,只可由其他组件调用它时再外部进行修改
在ES6中使用 static defaultProps 代替getInitialState:该函数用于对组件一些状态进行初始化 该函数不同于getDefaultProps,在以后的过程中,会再次调用,所以可以将控制控件状态的一些变量放在这里初始化,比如控件上显示的文字,可以通过this.state来获取值,通过 this.setState 来修改state值
在ES6中使用 constructor() 代替componentWillMount:组件被加载到视图之前调用
render:它是每个组件必需具备的方法,本质上是个函数,并且返回JSX或者其他组件来构成DOM, 只能通过this.state和this.props来访问之前在函数中初始化的数值
只能返回一个顶级元素
- componentDidMount():在调用了render方法,组件加载成功并被成功渲染出来之后,所要执行的后续操作,一般都会在这个函数中进行,比如经常要面对的网络请求等加载数据操作 因为UI已经成功渲染,而且这里面是异步的,索引放在这个函数进行数据的请求等复杂的操作,不会出现UI错误
2 更新阶段
- componentWillReceiveProps(nextProps):父元素传递给当前组件的props发生修改,该方法会被调用
- boolean shouldComponentUpdate(object nextProps, object nextState):是否需要重新渲染页面,可以对函数传递过来的nextProps和nextState 作判断,可以返回false或true来控制是否进行渲染,一般用于优化,
- componentWillUpdate(object nextProps, object nextState):与componentWillMount类似,参数为最新的props和state,不可以在该方法中更新state和props。
- componentDidUpdate(object prevProps,object prevState):与componentDidMount类似,在render执行之后渲染,参数为当前的props和state
3 销毁阶段
- componentWillUnmount: 组件将要卸载时候调用。可以执行相关的销毁操作,比如定时器,监听等等。