步入React正殿 - 生命周期

news2024/10/5 13:32:57

目录

资料

三个阶段的生命周期函数

创建阶段

初始化阶段constructor

挂载阶段componentWillMount

挂载阶段render

挂载阶段componentDidMount

更新阶段【props或state改变】

更新阶段componentWillReceiveProps

更新阶段shouldComponentUpdate【可不使用,PureComponent自动实现】

更新阶段componentDidUpdate

卸载阶段

卸载阶段componentWillUnmount

图解生命周期

生命周期调用顺序(旧版)

 生命周期调用图例(新版)

练习

使用 TODOMVC 素材实现一个应用,


资料

资料名称

链接

React新生命周期

详解React生命周期(包括react16最新版) - 简书

React v16.3之后的组件生命周期函数 - 知乎

普遍生命周期

三个阶段的生命周期函数

创建阶段【初始化】

初始化

  • Constructor
    • props
    • state

挂载

  • componentWillMount【组件加载前】
  • render【渲染中】
  • componentDidMount【组件加载后】

更新阶段【运行中】

  • componentWillRecieveProps【组件将接收props数据】
  • shouldComponentUpdate【组件更新前,判断是否更新】
  • render【更新渲染】
  • componentDidUpdate【更新后】

卸载阶段【销毁】

  • componentWillUnmount【组件销毁前】

创建阶段

初始化阶段constructor

  • 初始化内部状态,显性设置和隐性设置【Constructor】
  • 需要使用super()调用基类的构造方法
  • 可以直接修改state

挂载阶段componentWillMount

  • UI渲染完成前调用
  • 只执行一次
  • 这里调用setState不会触发render

挂载阶段render

  • 一个组件必须有的方法【class类组件】
  • 返回一个顶级的react元素
  • 渲染的是Dom Tree的一个React对象【不是element dom】
  • 不能在render里执行this.setState

挂载阶段componentDidMount

  • UI渲染完成后调用【包括所有子组件渲染完毕后执行】
  • 只执行一次
  • 获取一些外部数据资源

console.log

  1. App - constructor
  2. App.js:113 App - rendering
  3. navbar.jsx:4 Nav - rendering
  4. listPage.jsx:21 ListPage - rendering
  5. 3listItem.jsx:64 Item - rendering
  6. App.js:40 App - mounted

更新阶段【props或state改变】

更新阶段componentWillReceiveProps

  • 组件接收到新props的时候触发
  • 在此对比新props和原来的props
  • 不推荐使用【之后在进阶课程中有新的生命周期取代它】

更新阶段shouldComponentUpdate【可不使用,PureComponent自动实现】

  • 是否要继续执行render方法
  • 可以由PureComponent自动实现

更新阶段componentDidUpdate

  • 每次UI更新时调用【可以在这里与原来数据做对比,进行一些业务逻辑处理】
  • 更新一些外部数据资源

卸载阶段

卸载阶段componentWillUnmount

  • 组件移除时候调用
  • 可以用来做资源的释放

图解生命周期

生命周期调用顺序(旧版)

 生命周期调用图例(新版)

练习

使用 TODOMVC 素材实现一个应用,

http://todomvc.com/examples/react/#/  

可以使用上面的素材,可以使用MVC设计,也可以不使用,自己发挥实现一个Todo应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql事务篇——Day02

Mysql事务篇——Day02 事务有哪些特性并发事务引发的问题脏读不可重复读幻读 事务隔离级别Read View 在 MVCC里如何工作 事务有哪些特性 事务是依赖MySQL的储存引擎是实现的,我们常见的Innodb引擎就是支持事务的。 不过并不是所有的存储引擎都可以支持事务&#xf…

SecureCRT8.5安装教程

第一步: 将文件下载解压 第二步: 双击进行安装,或者右键以管理员的方式运行 第三步: 直接点下一步 第四步: 选择接受协议,然后点下一步 第五步: 我这里选择所有用户,然后点下一…

js实现按创建时间戳1609459200000 开始往后开始显示运行时长-demo

运行时长 00日 00时 17分 59秒 代码 function calculateRuntime(timestamp) {const startTime Date.now(); // 获取当前时间戳//const runtimeElement document.getElementById(runtime); // 获取显示运行时长的元素function updateRuntime() {const currentTimestamp Date…

spring入门基本介绍及注入方式---详细介绍

一,spring的简介 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 提供了许多功能强大且易于使用的特性,使得开发者能够更加轻松地构建可维护且可扩展的应用程序,简单来说: Spring使用基…

攻击LNMP架构Web应用

环境配置(centos7) 1.php56 php56-fpm //配置epel yum install epel-release rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm//安装php56,php56-fpm及其依赖 yum --enablereporemi install php56-php yum --enablereporemi install php…

深入了解唯品会API及其应用

随着电商行业的快速发展,API(Application Programming Interface,应用程序接口)已经成为许多企业实现系统对接、数据交换和功能扩展的重要工具之一。唯品会作为国内领先的电商平台之一,也提供了丰富的API接口&#xff…

component:()=>import(“@/views/Home.vue“) 报错,ts说没有找到类型声明文件

1 没有写.vue文件的类型声明,要在env.d.ts文件中写.vue的类型声明文件 2 ts.config.josn的incluede字段中,没有把.d.ts文件的路径写对。 如果没写对,就会在项目启动的时候,找不到.d.ts文件。找不到类型声明文件

【自动电压调节器】无功功率控制的终端电压控制研究(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) 二、CVE-2017-15031 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) Title 未初始化或保存/恢复PMCR_EL0可能会泄露安全世界的时间信息 CVE ID CVE-2017-1503…

cs231n assignment 3 Q2 Image Captioning with Vanilla RNNs

文章目录 嫌啰嗦直接看代码Q2 Image Captioning with Vanilla RNNs一个给的工具代码里的bug问题展示问题解决思路解决办法 rnn_step_forward题面解析代码输出 rnn_step_backward题面解析代码输出 rnn_forward题面解析代码输出 rnn_backward题面解析代码输出 word_embedding_for…

时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍…

leetcode 518. 零钱兑换 II

本题是背包问题系列的完全背包问题,和0-1背包唯一的区别就在于:物品是可以重复选取的。 经过之前背包问题的拷打,本题也是一遍AC了。 接下来将给出二维和一维两种做法。 二维dp数组做法: 本题的背包大小即为题中给出的总金额&am…

与微软Office抗衡,两大巨头布局,打造新办公软件,再上新台阶

办公软件是我们日常工作中不可或缺的工具。 除了广为人知的微软Office套件外,近几年来,中国市场有许多优秀的国产办公软件抢眼登场,这些软件在提高工作效率、简化工作流程方面发挥着重要作用。 简单介绍几款值得知道的国产办公软件&#xff…

【学习FreeRTOS】第9章——FreeRTOS任务调度

1.开启任务调度器 vTaskStartScheduler() 作用:用于启动任务调度器,任务调度器启动后, FreeRTOS 便会开始进行任务调度【动态创建任务为例】 创建空闲任务如果使能软件定时器,则创建定时器任务关闭中断,防止调度器开…

99%的Python用户都不知道的f-string隐秘技巧

f-string想必很多Python用户都基础性的使用过,作为Python3.6版本开始引入的特性,通过它我们可以更加方便地向字符串中嵌入自定义内容,但f-string真正蕴含的功能远比大多数用户知道的要丰富,今天我们就来一起get它们~ 「最基础用法…

JVS开源基础框架:平台基本信息介绍

JVS是面向软件开发团队可以快速实现应用的基础开发脚手架,主要定位于企业信息化通用底座,采用微服务分布式框架,提供丰富的基础功能,集成众多业务引擎,它灵活性强,界面化配置对开发者友好,底层容…

MySQL性能分析之慢查询日志查看

一、背景 MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应的时间超过阈值的语句,具体指运行时间超过long_query_time(默认是10秒)值的SQL,会被记录到慢查询日志中。 慢查询日志一般用于性能分析时开启,收集慢SQL然后通过explain进行全面分析,一…

GPU Dissolve(GPU 消散)学习GPU Instancing

一:摘要 通过制作一个模型GPU消散效果来学习GPU Instancing 也就是实例化。 目标效果是杨超大佬文章《GPU shatter》里面的消散效果如图: Tags:模型顶点分裂(Mesh Vertex Splitting), 实例化绘制(GPU Instancing Drawing)&#x…

【100天精通python】Day36:GUI界面编程_高级功能操作和示例

专栏导读 专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html 一、GUI 高级功能 1 自定义主题和样式 自定义主题和样式可以让你的GUI应用程序在外观方面更加出色。在使用Tkinter时,你可以使用ttkthemes库来应用不同的主题和样式。…

一文搞懂Spring是如何解决Bean循环依赖的?

一.什么是Bean循环依赖 循环依赖是指Bean对象循环引用,是两个或多个Bean之间相互持有对方的引用,循环依赖有2中表现形式 第一种相互依赖,就是A依赖B,B又依赖A 第二种是自我依赖,就是A依赖自己形成自我依赖 对象引用…