React-Native学习之路(二)组件的生命周期

React-Native组件的生命周期

2018年7月19日

16:03

 上图为React-Native组件的生命周期图,由于我编写时constructor已经替代了getDefaultProps和getInitialState两个方法所以重新做了张图以供学习。

一、初始化阶段

1).constructor:

        constructor即构造函数,我们可以在里面初始化props和state,其中用到的this关键字代表实例对象。当我们在其他的组件中调用这个组件时,就会实例化这个“类”(即组件)。

2).componentwillMount:

        这个函数在render进行渲染前触发,仅调用一次,在里面可以用于改变state,并且这是对state进行的最后的修改(这里最后的修改指的是通过this.state直接赋值,不同于之后在运行中可以用setstate修改)。

3).render:

        组件渲染函数,会返回一个Virtual DOM,只允许返回一个最外层容器组件,一般是返回一个View。render函数应尽量保持纯净,只渲染组件,不修改状态,不执行副操作(比如计时器等)。

4).componentDidMount:

        用来跑网络操作/耗时操作。一般的从后台(服务器)获取的数据,都会与组件上要用的数据加载有关,所以都在componentDidMount方法里面做。虽然与组件上的数据无关的加载,也可以在constructor里作,但constructor是作组件state初绐化工作,并不是设计来作加载数据这工作的,所以所有有副作用的代码都会集中在componentDidMount方法里(比如计时器,处理网络数据等)。

二、运行阶段

        在运行阶段有个明显的特征,就是不论props改变还是state改变都会调用render函数重新进行渲染。props改变会比state改变多一个步骤:componentWillReceiveProps,然后进行和state改变相同的流程

共同流程:

1).shouldComponentUpdate:

      当我们的Props或state改变后就会调用这个函数,这个函数返回的是一个bool值,若为true则继续执行componentWillUpdata,若返回false则直接回到运行状态,忽略props和state的改变。这个函数默认返回的是true,来保证数据变化后UI的正常更新。

2).componentWillUpdate:

          在这个函数中需要注意的是我们不能通过setstate来修改状态,因为在这个回调中有两个值,就是nextstate和nextprops,接下来就会直接把这两个值设置到this.state和this.props,紧接着传入render,进行渲染。

3).render:

        渲染组件,效果同上个render。

4).componentDidUpdata:

        这个函数会得到render渲染完成之后的通知

三、卸载阶段

componentWillUnmount:

        只有这一个函数,当组件要被移除的时候调用,在这里可以做一些相关的清理工作。

猜你喜欢

转载自blog.csdn.net/Leon_Jcy/article/details/81192589