美文网首页
ReactNative-组件的生命周期

ReactNative-组件的生命周期

作者: EvanTong | 来源:发表于2017-10-19 19:43 被阅读0次

一、RN组件的生命周期

概要

组件的生命周期描述了其从生成到消亡所经历的一系列状态。深入理解组件的生命周期及相关回调函数,可以使开发工作更加合理化,更是优化渲染性能的关键。

组件生命周期大概可以分为三个阶段:

第一阶段:组件的第一次绘制阶段,完成组件的加载和初始化。

第二阶段:组件的运行和交互阶段,处理用户交互、接收事件、更新界面等。

第三阶段:组件卸载消亡阶段,做一些清除定时器等清理工作。

生命周期流程,如下图(源自网络)所示:

组件生命周期流程图

回调函数

回调函数 含义 调用次数 可否setState 应用场景
getDefaultProps 获得组件默认属性 1 在组件类创建时调用一次,返回值被缓存下来,若父组件没有给某个prop赋值,则相应的属性将会合并到this.props
getInitialState 获得组件初始化状态 1 在组件挂载之前调用一次,返回值将会作为 this.state 的初始值
componentWillMount 组件将要加载 1 业务相关的初始化操作、设置组件初始状态等
render 组件渲染 >=1 组件渲染具体的实现,包括一些逻辑判断,根据最新数据显示组件的最新状态
componentDidMount 组件已经加载完成 1 与其他JS框架交互,如设置计时器、发起网络请求等
componentWillReceiveProps 组件将要收到新属性 >=0 根据接收到的新属性,执行后续操作,如更新组件状态、开启/关闭动画、发起网络请求等
shouldComponentUpdate 是否需要更新组件 >=0 当组件接收到新的属性和状态改变时,均会触发此函数。若返回true,往后执行;若返回false,不更新组件,进入等待状态。可做逻辑判断返回不同的值
componentWillUpdate 组件将要更新 >=0 做一些在更新界面之前要做的事情。此函数之后,就会调用render()来更新界面
componentDidUpdate 组件更新完毕 >=0 做一些组件更新完毕后的收尾工作
componentWillUnmount 组件将要卸载 1 组件卸载后的一些清理工作,如取消定时器任务、结束动画、移除监听器、清除reducer数据等

二、痛点

1、从另一个页面pop回当前页面,没有相应的回调函数,无法在该时机做相应处理。

案例:从A页面push到B页面,一番操作之后,回到A页面,根据业务需求,需要请求网络数据刷新A页面展示。

解决方案:在恰当的时机,如B页面中的某个按钮被点击或B页面销毁时,调用A页面中的函数,请求接口刷新A页面数据。

缺憾:此类情况比较隐蔽,开发、测试阶段不易被发现,容易造成bug。

三、疑点

1、网络请求操作为什么一般要写在componentDidMount中,而不是constructor或者componentWillMount中?

  • 在componentDidMount中,�组件已经渲染完成,处于稳定状态,在发出请求之前没有任何的等待。
  • 在constructor或componentWillMount中发起网络请求,会阻碍组件的实例化和渲染。
  • 在componentWillMount中调用setState,不会触发组件的重新渲染。

四、注意点

1、没有componentDidUnmount这一回调函数!

2、在componentWillMount、componentWillReceiveProps中调用setState方法更新组件状态,不会造成额外的render调用。

(待续...)

相关文章

  • ReactNative-组件的生命周期

    一、RN组件的生命周期 概要 组件的生命周期描述了其从生成到消亡所经历的一系列状态。深入理解组件的生命周期及相关回...

  • 1组件的生命周期

    组件的生命周期:组件从创建到销毁的过程称为组件的生命周期。组件的生命周期通常分为三个阶段: 组件的挂在阶段。 组件...

  • 进阶react.js

    组件生命周期 组件的生命周期有助于理解组件的运行方式,完成更复杂的组件功能、分析组件错误原因等组件的生命周期: 组...

  • Flutter 生命周期研究与应用

    Flutter 生命周期包括了组件的生命周期以及App的生命周期。 一、组件生命周期 一个flutter组件主要分...

  • 二、Lifecycle

    使用生命周期感知组件处理生命周期 生命周期感知组件可以在其他组件(例如 activity 和 fragment)的...

  • React总结

    [toc] 1.React组件生命周期 1.1 生命周期图 组件的生命周期的图如下: 具体可参考React 组件生...

  • 2、Android官方架构组件介绍之LifeCycle(一)

    Android官方架构组件介绍之LifeCycle 使用生命周期感知组件处理生命周期 支持生命周期的组件会响应另一...

  • React 生命周期

    React 生命周期 初始化周期 组件重新渲染生命周期 组件卸载生命周期

  • Vue3:组件的生命周期与数据共享

    1、组件的生命周期 1.1 组件运行的过程 运行过程 组件的生命周期指的是:组件从创建 -> 运行(渲染) -> ...

  • React 组件生命周期

    组件生命周期 参考阅读: component-lifecycle react组件生命周期过程说明 react 组件...

网友评论

      本文标题:ReactNative-组件的生命周期

      本文链接:https://www.haomeiwen.com/subject/xqepuxtx.html