网上看的博客,看着写的很好,想深入学RN的详细看下之后,再自己敲敲吧!有助于身体健康!

一个RN组件从它被加载,到最终被卸载会经历一个完整的生命周期。所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命周期,是合理开发的关键。

ES6语法和之前的ES5语法有所变化,本文是根据ES6语法写的。

组件生命周期流程图

在ES5语法中,有getDefaultPropTypes这个函数,这个函数在组件被创建的时候调用一次,它的返回值成为了this.props的初始值

在ES6语法中,属性的类型和默认值声明不像ES5语法那样在组件定义内部声明,而是在组件定义的外部声明,所以生命周期函数没有了getDefaultPropsType了,但是声明DefaultPropTypes也是在组件创建的时候调用一次

constructor 构造函数

这个函数会在组件创建的时候调用一次。这个方法中可以通过this.state初始化状态机(ES5是通过getInitialState方法初始化的)。一般还在该方法中进行方法的bind(this)操作

 

componentWIllMount

在React Native组件的生命周期中,这个函数只会被执行一次。它在初始渲染(render)前被执行,当它执行完后,render函数会马上被react native框架调用执行.

如果在这个函数中通过setState函数修改状态变量,RN框架不会额外执行渲染

如果子组件也有componentWillMount函数,会在父组件之后调用

如果需要从本地存储中读取数据用于显示,这个函数是一个不错的选择

componentDidMount

在react native组件的生命周期中,这个函数只会被执行一次,它在初始渲染完成后会马上被调用.在这之后可以通过子组件的引用来访问,操作任何子组件.

如果RN组件的子组件也有componentDidMount函数,并会在父组件的componentDidMount函数之前被调用.

一般情况在这个方法中请求网络是一个不错的选择!

 

componentWillReceiveProps

这个函数的原型是:

componentWillReceiveProps(object nextProps)

在RN组件的初始渲染完成之后,当RN组件接收到新的props时,这个函数将被调用.参数就是新的props.

再次强调下,初次渲染不会调用该方法,是故意设计这种机制的

如果新的props会导致界面重新渲染,这个函数将在渲染前执行.如果函数中修改状态,框架不会立刻执行状态机改变的渲染而是等函数执行完之后一起渲染.

shouldComponentUpdate

这个函数的原型是:

boolean shouldComponentUpdate(obj nextProps,obj nextState)

RN组件的初始化渲染执行完成后,RN组件接收到新的state或者props时这个函数会调用.

函数返回一个布尔值,告诉RN组件是否重新渲染,如果false,不会渲染,相应的下面两个方法componentWIllUpdate和componentDidUpdate不会被调用.

通过这个函数阻止无必要的重新渲染,是提高RN应用程序性能的一大技巧.

componentWillUpdate

这个函数的原型是:

componentWillUpdate(obj nextProps,obj nextState)

初始渲染完成之后,重新渲染前会调用这个函数.但是这个函数不能通过this.setSatte再次改变状态机变量的值

componentDidUpdate

这个函数的原型是:

componentDidUpdate(obj nextProps,obj nextState)

RN组件初始完成之后,RN框架在重新渲染RN组件完成之后调用,参数是渲染前的props和state

componentWillUnMount

这个函数的原型是:

componentWillUnMount()

RN组件卸载前,这个函数被执行

RN生命周期的更多相关文章

  1. ReactNative——UI2.组件生命周期

    对于习惯了iOS开发的同学,可能会对React Native中组件的生命周期很困惑.在iOS中有一个ViewDidLoad来初始化,那么在RN中,又是在哪里呢? 一.看图分析 在下图中描述了React ...

  2. 【RN - 基础】之React Native组件的生命周期

    下图描述了React Native中组件的生命周期: 从上图中可以看到,React Native组件的生命周期可以分为初始化阶段.存在阶段和销毁阶段. 实例化阶段 实例化阶段是React Native ...

  3. React Native 中组件的生命周期

    概述 就像 Android 开发中的 View 一样,React Native(RN) 中的组件也有生命周期(Lifecycle).所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命 ...

  4. Asp.Net生命周期系列五

    如果您看了我的前四篇文章,应该知道目前Http请求已经流到了HttpModule这个程序员手中了,而且我们可以注册自己的HttpModule并且可以在里面注册一些事件来控制这个Http请求,但是到目前 ...

  5. 从零学习Fluter(三):Flutter的路由跳转以及state的生命周期

    今天继续研究Flutter,我是在flutter1.0发布后,才玩flutter的,发现在此之前,许多人已经先发制人,玩起了flutter,不知不觉中,我已经被别人摔在了起跑线上,玩过flutter后 ...

  6. react native环境搭建与生命周期

    1.搭建开发环境 英文文档:http://facebook.github.io/react-native/docs/getting-started.html 中文文档:https://reactnat ...

  7. React Component Lifecycle(生命周期)

    生命周期 所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命周期,是合理开发的关键.RN 组件的生命周期整理如下图: 如图,可以把组件生命周期大致分为三个阶段: 第一阶段:是组件第一 ...

  8. java多线程(2)---生命周期、线程通讯

    java生命周期.线程通讯 一.生命周期 有关线程生命周期就要看下面这张图,围绕这张图讲解它的方法的含义,和不同方法间的区别.    1.yield()方法 yield()让当前正在运行的线程回到就绪 ...

  9. 《React Native 精解与实战》书籍连载「React Native 中的生命周期」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

随机推荐

  1. JS判断是否是PC端访问网站

    function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...

  2. js API

    从基础知识JS-web-API js基础知识:ECMA 262标准 js-web-API: w3c标准 W3c标准中关于js的规定有 DOM操作.BOM操作.事件绑定.ajax请求(包括http协议) ...

  3. java基础50 配置文件类(Properties)

    1. 配置文件类Properties的概念 主要生产配置文件与读取配置文件的信息 2.Properties要注意的细节 1.如果配置文件一旦使用了中文,那么在使用store方法生产的配置文件额时候字符 ...

  4. AdvStringGrid 列宽度、列移动、行高度、自动调节

    那么有没有办法,让客户自己去调整列的宽度呢? 那么有没有办法 让列宽度.行高度 随着内容而自动变换呢: unit Unit5; interface uses Winapi.Windows, Winap ...

  5. JDBC核心API

    JDBC核心API在java.sql.*和javax.sql.* 1.Driver接口:表示Java驱动程序接口,具体的数据库厂商要实现其此接口 connect(url.propertis):连接数据 ...

  6. USACO 6.5 Closed Fences

    Closed Fences A closed fence in the plane is a set of non-crossing, connected line segments with N c ...

  7. Linux 的软件安装目录

    Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32. / ...

  8. Python全栈开发之13、CSS

    一.css简介 CSS 是 Cascading Style Sheets的缩写,用来设计网页的样式布局,以及大小来适应不同的屏幕等,使网页的样式和网页数据分离, 二.导入css 导入css有4种方式: ...

  9. Vue.js中 watch 的高级用法

    假设有如下代码: <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type=&q ...

  10. git更新到仓库

    记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝.接下来,对这些文件作些修改,在完成了一个阶段的目标之后,提交本次更新到仓库. 请记住,工作 ...