熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期。今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧

android开发中,React Native组件的生命周期,大致分为三个阶段,分别是:

1、组件第一次绘制阶段,这个阶段主要是组件的加载和初始化;

2、组件在运行和交互阶段,这个阶段组件可以处理用户交互,或者接收事件更新界面;

3、组件卸载消亡的阶段,这个阶段主要是组件的清理工作。

在Android React Native组件的整个生命周期中,还有10个回调函数,不得不知。

1、object getDefaultProps()在组件类创建的时候调用一次,然后返回值被缓存下来。

2、object getInitialState()在组件挂载之前调用一次。返回值将会作为 this.state 的初始值。

3、componentWillMount ()在初始化渲染执行之前立刻调用。

4、ReactComponent render()这个方法是必须的,对视图进行渲染,你也可以返回 null 或者 false 来表明不需要渲染任何东西。

5、componentDidMount()在初始化渲染执行之后立刻调用一次。

6、componentWillReceiveProps(object nextProps)在组件接收到新的 props 的时候调用。在初始化渲染的时候,该方法不会调用。可以用于更新 state 来响应某个 prop 的改变。

7、boolean shouldComponentUpdate(object nextProps, object nextState)在接收到新的 props 或者 state,将要渲染之前调用,如果确定新的 props 和 state 不会导致组件更新,则此处应该 返回 false。返回true将进行渲染。

8、componentWillUpdate(object nextProps, object nextState)在接收到新的 props 或者 state 并且shouldComponentUpdate返回true时调用。

9、componentDidUpdate(object prevProps, object prevState)在组件的更新已经同步到 DOM 中之后立刻被调用。

10、componentWillUnmount()在组件从 DOM 中移除的时候立刻被调用。在该方法中执行任何必要的清理,比如无效的定时器,或者清除在 componentDidMount 中创建的 DOM 元素。

为加深大家对相关知识的掌握和了解,下面我们一起来看看测试代码吧:

/**

* Sample React Native App

* http://www.maiziedu.com

*/

'use strict';

var React = require('react-native');

var {

AppRegistry,

StyleSheet,

View,

} = React;

var AwesomeProject = React.createClass({

//在组件类创建的时候调用一次,然后返回值被缓存下来。

getDefaultProps:function(){

console.log("getDefaultProps");

return null;

},

//初始化状态,在组件挂载之前调用一次。返回值将会作为 this.state 的初始值。

getInitialState:function(){

console.log("getInitialState");

return null;

//必须有返回值,可以是NULL或者一个对象。

},

//组件将要被渲染

componentWillMount:function(){

console.log("componentWillmount");

},

//渲染视图

render:function(){

console.log("render");

return (

<View>

</View>

);

//你也可以返回 null 或者 false 来表明不需要渲染任何东西

},

//渲染视图完成后

componentDidMount:function(){

console.log("componentDidMount");

this.loadDataToSetState();

},

//组件接收到新属性,在初始化渲染的时候,该方法不会调用。

componentWillReceiveProps:function(nextProps){

console.log("componentWillReceiveProps");

//console.log(nextProps);

},

//组件是否需要更新

shouldComponentUpdate:function(nextProps,nextState){

console.log("shouldComponentUpdate");

//console.log(nextProps+"|"+nextState);

return true;

},

//组件将要被更新

componentWillUpdate:function(nextProps,nextState){

console.log("componentWillUpdate");

//console.log(nextProps+"|"+nextState);

},

//组件更新完毕

componentDidUpdate:function(prevProps,prevState){

console.log("conponentDidUpdate");

//console.log(prevProps+"|"+prevState);

},

//组件被销毁之前,做清理操作

componentWillUnmount:function(){

console.log("componentWillUnmount");

},

loadDataToSetState:function(){

console.log("loadDataToSetState");

this.setState({

name : "RN"

})

},

});

var styles = StyleSheet.create({

});

AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);

最后的输出如下,我们再 componentDidMount 中调用了 loadDataToSetState 函数,该函数中通过了setState函数对state进行了设置,这时候就会回调shouldComponentUpdate,如果返回true,则会继续调用 componentWillUpdate , render , conponentDidUpdate ,之后按返回键退出应用,则会进行销毁操作,回调

componentWillUnmount

getDefaultProps

getInitialState

componentWillmount

render

componentDidMount

loadDataToSetState

shouldComponentUpdate

componentWillUpdate

render

conponentDidUpdate

componentWillUnmount

而关于 componentWillReceiveProps 函数的触发是在props属性改变之后才会触发,我在代码中尝试着修改这个属性,但是无果,会报错,姑且不理会。只要理解了何时调用就好了。

而关于调试,React-Native官网提供了一个Chrome下调试的插件,见 Chrome Developer Tools ,安装了该插件后,在手机上的开发者选项中开启debug js,就可以在chrome中看到控制台输出的信息以及js的报错信息了。

以上就是Android React Native组件的生命周期及相关函数的使用,希望对大家学习相关知识有所帮助。

相关文章:《Android开发工具常用快捷键大全

Android React Native组件的生命周期及回调函数的更多相关文章

  1. react native组件的生命周期

    react native组件的生命周期 一.当页面第一次加载时,会依次调用: constructor() componentWillMount(): 这个函数调用时机是在组件创建,并初始化了状态之后, ...

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

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

  3. React Native组件、生命周期及属性传值props详解

    创建组件的三种方式 第一种:通过ES6的方式创建 /** * 方式一 :ES6 */ export default class HelloComponent extends Component { r ...

  4. React Native——组件的生命周期

    组件生命周期 上流程图描述了组件从创建.运行到销毁的整个过程,可以看到如果一个组件在被创建,从开始一直到运行会依次调用getDefaultProps到render这五个函数:在运行过程中,如果有属性和 ...

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

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

  6. React Native 中 component 生命周期

    React Native 中 component 生命周期 转自 csdn 子墨博客  http://blog.csdn.net/ElinaVampire/article/details/518136 ...

  7. reactjs入门到实战(七)---- React的组件的生命周期

    React的组件的生命周期有三个状态分别是:挂载(生产组件示例化.准备挂载到页面.挂载到页面).更新(更新值.更新DOM).和卸载(卸载后). >>>其他     getInitia ...

  8. React:组件的生命周期

    在组件的整个生命周期中,随着该组件的props或者state发生改变,其DOM表现也会有相应的变化.一个组件就是一个状态机,对于特定地输入,它总返回一致的输出. 一个React组件的生命周期分为三个部 ...

  9. android官方Api 理解Activity生命周期的回调机制(适合有基础的人看)

    原文地址:http://www.android-doc.com/training/basics/activity-lifecycle/starting.html#lifecycle-states 此处 ...

随机推荐

  1. Redis高可用

    redis高可用只要在于三个方面 主从复制 哨兵机制 集群机制 主从复制 主从复制作用: 1.数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式.2.故障恢复:当主节点出现问题时,可 ...

  2. 搭建MQTT代理服务器

    # 解压tar zxfv mosquitto-1.4.14.tar.gz# 进入目录cd mosquitto-1.4.14# 编译make# 安装sudo make instal 1 启动代理服务在第 ...

  3. 记一次微信小程序在安卓的白屏问题

    在做小程序的时候,做到了一个限时商品售卖,用到了倒计时,因为这个原因导致了安卓手机上使用小程序时,将小程序放入后台运行一段时间后,再次进入小程序后出现了页面白屏或者点击事件失效的情况,这里记录下 1. ...

  4. py2exe安装使用

    一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序. py2e ...

  5. CI 框架源码解析一之入口文件 index.php

    Index.php作为CI框架的入口文件,源码分析,自然而然由此开始.在源码分析的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现,如果英文水平很好的话,读过index.php文件的英文注释之 ...

  6. easypoi 一行代码搞定excel导入导出

    开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事儿,此处推荐一个别人造好的轮子[easypoi],下面介绍下“轮子”的使用. pom ...

  7. Background Segment CNT

    CNT简介 CNT算法是OpenCV Contrib 模块中的背景减除(Background segment)算法之一.相较于OpenCV提供的其他背景减 除算法,该算法具有运行速度快,检测精度高等优 ...

  8. Leetcode 701. 二叉搜索树中的插入操作

    题目链接 https://leetcode.com/problems/insert-into-a-binary-search-tree/description/ 题目描述 给定二叉搜索树(BST)的根 ...

  9. (洛谷)P2709 小B的询问

    题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...

  10. dfs序线段树

    dfs序+线段树,啥?如果在一棵树上,需要你修改一些节点和查询一些节点,如果直接dfs搜的话肯定超时,那用线段树?树结构不是区间啊,怎么用?用dfs序将树结构转化为一个区间,就能用线段树进行维护了. ...