当前位置: 首页 > 综合 >

每日时讯!react生命周期图 react生命周期

2023-06-27 04:12:52 来源:城市网

1、概述 就像 Android 开发中的 View 一样,React Native(RN) 中的组件也有生命周期(Lifecycle)。


【资料图】

2、所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命周期,是合理开发的关键。

3、RN 组件的生命周期整理如下图: 如图,可以把组件生命周期大致分为三个阶段: 第一阶段:是组件第一次绘制阶段,如图中的上面虚线框内,在这里完成了组件的加载和初始化; 第二阶段:是组件在运行和交互阶段,如图中左下角虚线框,这个阶段组件可以处理用户交互,或者接收事件更新界面; 第三阶段:是组件卸载消亡的阶段,如图中右下角的虚线框中,这里做一些组件的清理工作。

4、 生命周期回调函数 下面来详细介绍生命周期中的各回调函数。

5、 getDefaultProps 在组件创建之前,会先调用 getDefaultProps(),这是全局调用一次,严格地来说,这不是组件的生命周期的一部分。

6、在组件被创建并加载候,首先调用 getInitialState(),来初始化组件的状态。

7、 componentWillMount 然后,准备加载组件,会调用 componentWillMount(),其原型如下: void componentWillMount() 这个函数调用时机是在组件创建,并初始化了状态之后,在第一次绘制 render() 之前。

8、可以在这里做一些业务初始化操作,也可以设置组件状态。

9、这个函数在整个生命周期中只被调用一次。

10、 componentDidMount 在组件第一次绘制之后,会调用 componentDidMount(),通知组件已经加载完成。

11、函数原型如下: void componentDidMount() 这个函数调用的时候,其虚拟 DOM 已经构建完成,你可以在这个函数开始获取其中的元素或者子组件了。

12、需要注意的是,RN 框架是先调用子组件的 componentDidMount(),然后调用父组件的函数。

13、从这个函数开始,就可以和 JS 其他框架交互了,例如设置计时 setTimeout 或者 setInterval,或者发起网络请求。

14、这个函数也是只被调用一次。

15、这个函数之后,就进入了稳定运行状态,等待事件触发。

16、 componentWillReceiveProps 如果组件收到新的属性(props),就会调用 componentWillReceiveProps(),其原型如下: void componentWillReceiveProps( object nextProps ) 输入参数 nextProps 是即将被设置的属性,旧的属性还是可以通过 this.props 来获取。

17、在这个回调函数里面,你可以根据属性的变化,通过调用 this.setState() 来更新你的组件状态,这里调用更新状态是安全的,并不会触发额外的 render() 调用。

18、如下: componentWillReceiveProps: function(nextProps) { this.setState({ likesIncreasing: nextProps.likeCount > this.props.likeCount }); } shouldComponentUpdate 当组件接收到新的属性和状态改变的话,都会触发调用 shouldComponentUpdate(...),函数原型如下: boolean shouldComponentUpdate( object nextProps, object nextState ) 输入参数 nextProps 和上面的 componentWillReceiveProps 函数一样,nextState 表示组件即将更新的状态值。

19、这个函数的返回值决定是否需要更新组件,如果 true 表示需要更新,继续走后面的更新流程。

20、否者,则不更新,直接进入等待状态。

21、 默认情况下,这个函数永远返回 true 用来保证数据变化的时候 UI 能够同步更新。

22、在大型项目中,你可以自己重载这个函数,通过检查变化前后属性和状态,来决定 UI 是否需要更新,能有效提高应用性能。

23、 componentWillUpdate 如果组件状态或者属性改变,并且上面的 shouldComponentUpdate(...) 返回为 true,就会开始准更新组件,并调用 componentWillUpdate(),其函数原型如下: void componentWillUpdate( object nextProps, object nextState ) 输入参数与 shouldComponentUpdate 一样,在这个回调中,可以做一些在更新界面之前要做的事情。

24、需要特别注意的是,在这个函数里面,你就不能使用 this.setState 来修改状态。

25、这个函数调用之后,就会把 nextProps 和 nextState 分别设置到 this.props和 this.state 中。

26、紧接着这个函数,就会调用 render() 来更新界面了。

27、 componentDidUpdate 调用了 render() 更新完成界面之后,会调用 componentDidUpdate() 来得到通知,其函数原型如下: void componentDidUpdate( object prevProps, object prevState ) 因为到这里已经完成了属性和状态的更新了,此函数的输入参数变成了 prevProps 和 prevState。

28、 componentWillUnmount 当组件要被从界面上移除的时候,就会调用 componentWillUnmount(),其函数原型如下: void componentWillUnmount() 在这个函数中,可以做一些组件相关的清理工作,例如取消计时器、网络请求等。

29、 总结 到这里,RN 的组件的完整的生命都介绍完了,在回头来看一下前面的图,就比较清晰了,把生命周期的回调函数总结成如下表格: 生命周期 调用次数 能否使用 setSate() getDefaultProps 1(全局调用一次) 否 getInitialState 1 否 componentWillMount 1 是 render >=1 否 componentDidMount 1 是 componentWillReceiveProps >=0 是 shouldComponentUpdate >=0 否 componentWillUpdate >=0 否 componentDidUpdate >=0 否 componentWillUnmount 1 否 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相信通过react生命周期这篇文章能帮到你,在和好朋友分享的时候,也欢迎感兴趣小伙伴们一起来探讨。

本文由用户上传,如有侵权请联系删除!
标签:
最近更新
15037178970
婚姻法
跑腿买药可以用医保吗?代购销售药是否违法? 观热点
微头条丨轻伤派出所抓人要多久需要根据具体情况确定吗?
一般要提供哪些材料呢?起诉离婚如何进行举证?起诉离婚应符合哪些条件? 全球快资讯
走私犯罪中的帮助可以量刑折合吗?量刑建议书和实际判刑差距大吗?
肯定属于夫妻一方的财产有哪些(哪些是夫妻共同财产)
债务人抗辩权的种类有哪些?可抗辩权有什么法律依据是什么?|世界报资讯
天天消息!医疗事故鉴定是必须做的吗?受害人是否必须做伤情鉴定?
天天观点:划拨土地房屋过户交多少税费?划拨土地使用权取得的适用范围有哪些?
关于医疗事故鉴定有多久时效?什么是医疗事故鉴定书? 每日动态
环球观天下!劳动合同应当具备哪些条款?协议书的合同的内容要有哪些?
知识纠纷
1 判断一个行政行为合法与否要满足的要求有哪些? 世界看热讯
2 播报:委托辩护人有什么要求呢?被告人有权随时委托辩护人吗?
3 天天观天下!一般情况失踪人口超过24小时可以报案吗?报案的主体是谁?
4 过期食品处罚标准是什么?食品过期怎么处理? 焦点要闻
5 法医鉴定程序是怎么样的?司法鉴定程序通则第十一条的内容是什么?_环球动态
6 全球今头条!什么是本金归还?二手房过户需注意的问题有哪些?
7 办理股权质押登记需要什么资料?质权人可就出质股权的价值优先受偿吗?
8 网购纠纷的诉讼时效多久?一般法院网络购物纠纷开庭吗?
公司法
工商营业执照申请流程是什么?办理营业执照需要的材料是什么? 世界聚焦
停工留薪期不可以取代年休假吗?停工留薪期一般不超过多少个月? 世界短讯
所有权的特征是什么?所有权是一种什么权利?|天天视讯
全球最资讯丨结婚登记的程序可分为哪些步骤?婚姻登记机关乱收费会怎么样呢?
签了协议未办离婚手续协议是否有效呢?离婚协议书是夫妻双方离婚时一个必要的法律文件吗?
环球快播:吃国家二级保护动物判几年?涉嫌非法猎捕怎么判刑?
视点!变更子女抚养关系的应另行起诉?变更子女抚养的条件是什么?
全球快看点丨可要求卖家赔偿的内容有什么?遇到一房二卖的情形怎么维权?
涉嫌律师伪证罪怎么处罚?伪证罪的立案标准是什么?
打遗产继承官司律师怎么收费?想打遗产继承原告都要什么证明?
合同法
离婚夫妻共同财产怎么分?离婚共同财产怎样认定?|世界微头条

2023-06-25

进出口公司经营范围有哪些?进出口贸易流程您了解吗?|环球热议

2023-06-25

股份制公司成立的条件有什么?中华人民共和国公司法第七十六条是什么?

2023-06-25

【世界报资讯】可以领取养老金的标准条件是什么?中华人民共和国社会保险法第十七条内容是什么?

2023-06-25

我国军婚的条件是什么?结婚的适用范围有哪些?

2023-06-25

法律监督机关是指什么部门?人民检察院职能职权有哪些?

2023-06-21

劳动纠纷
离婚夫妻共同财产怎么分?离婚共同财产怎样认定?|世界微头条
进出口公司经营范围有哪些?进出口贸易流程您了解吗?|环球热议
股份制公司成立的条件有什么?中华人民共和国公司法第七十六条是什么?
【世界报资讯】可以领取养老金的标准条件是什么?中华人民共和国社会保险法第十七条内容是什么?
我国军婚的条件是什么?结婚的适用范围有哪些?
法律监督机关是指什么部门?人民检察院职能职权有哪些?

法律解答网版权所有 2005-2022

备案号:京ICP备2022016840号-54 联系qq:920 891 263 @qq.com