当前位置: 首页 > news >正文

React的生命周期函数详解


import React,{Component} from "react";import SonApp from './sonApp'class App extends Component{state={hobby:'爱吃很多好吃的'}// 是否要更新数据,这里返回true才会更新数据shouldComponentUpdate(nextProps,nextState){console.log("app.js第一步:这里判断是否要更新数据")console.log(nextProps)  // 父组件传给子组件的值,这里没有会显示空console.log(nextState)  // 数据更新后的值return true             // 返回true,确认更新}// 更新数据时触发的生命周期函数componentDidUpdate(){console.log("app.js第四步:组件更新完成")}// 完成渲染即将被挂载在DOM中, 这会已经生成了新的DOM节点了,不过还有修改文档,你可以在这里去获取更新之前的文档getSnapshotBeforeUpdate(){console.log("app.js第四步:完成渲染即将被挂载在DOM中")return 11}setData = ()=>{this.setState({hobby:"你是猪吗???"})}render(){console.log("app.js第三步:数据渲染render")return (<div>{this.state.hobby}<button onClick={this.setData}>点击更新数据</button><SonApp value={this.state.hobby}></SonApp></div>)};}export default App;

浏览器反馈

在这里插入图片描述

2. 挂载阶段


constructor(props)

类的构造函数,也是组件初始化函数,一般情况下,我们会在这个阶段做一些初始化的工作

  • 初始化 state

  • 处理事件绑定函数的 this(之前有过一篇React踩坑系列,其中的this指向就有用的这里去处理)

constructor(props){super(props)console.log("第一步:构造函数")}

render

组件生命周期渲染阶段执行的函数

render(){console.log("第三步:渲染render")return (<div>我喜欢吃各种口味的广式月饼,除了水果味的!!!</div>)};

static getDerivedStateFromProps(props, state)

该方法会在 render 方法之前调用,无论是挂载阶段还是更新阶段,它的存在只有一个目的:让组件在 props 变化时更新 state

static getDerivedStateFromProps(props, state){console.log(props); // 接收到父组件传递过来的新的propsconsole.log(state); // 组件当前的数据console.log("第二步:组件将要挂载");return state;   // 用户需要在这个函数中返回一个对象, 它将作为 setState() 中的 Updater 更新组件.}

componentDidMount()

在组件挂载后调用

componentDidMount(){console.log("第四步:组件挂载完成")}

整体代码组成组件加载阶段


import React,{Component} from "react";class App extends Component{constructor(props){super(props)console.log("第一步:构造函数")}state={hobby:'爱吃很多好吃的'}/*** 每次组件渲染前被调用,该方法会在 render 方法之前调用,无论是挂载阶段还是更新阶段,* 它的存在只有一个目的:让组件在 props 变化时更新 state* */ static getDerivedStateFromProps(props, state){console.log(props); // 接收到父组件传递过来的新的propsconsole.log(state); // 组件当前的数据console.log("第二步:组件将要挂载");return state;   // 用户需要在这个函数中返回一个对象, 它将作为 setState() 中的 Updater 更新组件.}// 组件挂在完成时触发的生命周期函数componentDidMount(){console.log("第四步:组件挂载完成")}render(){console.log("第三步:渲染render")return (<div>我喜欢吃各种口味的广式月饼,除了水果味的!!!</div>)};}export default App;

浏览器反馈

在这里插入图片描述

3. 销毁阶段


componentWillUnmount()

该方法会在组件卸载及销毁前调用,我们可以在这里做一些清理工作,如:组件内的定时器、未完成的请求等

componentWillUnmount(){console.log("sonApp.js组件被销毁")}

完整版销毁组件代码


父组件import React,{Component} from "react";import SonApp from './sonApp'class App extends Component{state={hobby:true}setData = ()=>{
#### 算法刷题大厂面试还是很注重算法题的,尤其是字节跳动,算法是问的比较多的,关于算法,推荐《LeetCode》和《算法的乐趣》,这两本我也有电子版,字节跳动、阿里、美团等大厂面试题(含答案+解析)、学习笔记、Xmind思维导图均可以分享给大家学习。![](https://img-blog.csdnimg.cn/img_convert/c582a01373152bb4cd38bc6ad5cc8027.png)**写在最后****最后,对所以做Java的朋友提几点建议,也是我的个人心得:**1.  疯狂编程2.  学习效果可视化3.  写博客
4.  阅读优秀代码
5.  心态调整

相关文章:

React的生命周期函数详解

import React,{Component} from "react";import SonApp from ./sonAppclass App extends Component{state{hobby:爱吃很多好吃的}// 是否要更新数据&#xff0c;这里返回true才会更新数据shouldComponentUpdate(nextProps,nextState){console.log("app.js第一步…...

DoubleSummaryStatistics 及其相关类之-简介

1. DoubleSummaryStatistics 使用简介 在Java 8中&#xff0c;DoubleSummaryStatistics 类被引入作为 java.util 包的一部分。它是一个用于收集统计数据&#xff08;如计数、最小值、最大值、和、平均值等&#xff09;的类&#xff0c;特别适用于处理 double 类型的数据。 Do…...

java线程间的通信 - join 和 ThreadLocal

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…...

差分GPS原理

双差RTK&#xff08;Real-Time Kinematic&#xff09;算法是基于差分全球卫星导航系统&#xff08;GNSS&#xff09;技术的一种高精度定位方法。它利用至少两个接收机&#xff08;一个为基站&#xff0c;其他为移动站&#xff09;接收自同一组卫星的信号来实现精确测量。双差处…...

【栈与队列】前k个高频元素

题目&#xff1a;给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 分析&#xff1a;首先我们需要计算数组中元素出现的频率&#xff0c;前几篇文章讲解了哈希表的应用&#xff0c;所以这里我们很容易想到用…...

B端产品竞品分析-总结版

B端竞品分析的难点 分析维度-业务逻辑复杂 B端产品与C端产品业务模型不同&#xff0c;B端产品主要以业务为导向&#xff0c;因此其业务流程与业务逻辑梳理起来也会较C端产品复杂的多&#xff0c;对于个人能力也有一定的要求&#xff0c;需要我们具备相关领域或行业专业知识。…...

刷代码随想录有感(116):动态规划——单词拆分

题干&#xff1a; 代码&#xff1a; class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string>set(wordDict.begin(), wordDict.end());vector<bool>dp(s.size() 1, false);dp[0] true;for(int j 0; j &…...

CSS-0_1 CSS和层叠(样式优先级、内联样式、选择器 用户代理样式)

CSS 的本质就是声明规则 ——《深入解析CSS》 文章目录 CSS层叠和优先级用户代理样式请和用户代理样式和谐相处 选择器单选择器的优先级选择器组的优先级关于选择器的其他源码顺序尽可能的选择优先级低的选择器 内联样式内联样式和JavaScript !important多个 !important 碎碎念…...

科技赋能冷链园区:可视化带来全新体验

应用图扑可视化技术&#xff0c;冷链园区能够更加直观地监控和管理资源&#xff0c;优化运作流程&#xff0c;提高运营效率与服务质量。...

高通安卓12-安卓系统定制2

将开机动画打包到system.img里面 在目录device->qcom下面 有lito和qssi两个文件夹 现在通过QSSI的方式创建开机动画&#xff0c;LITO方式是一样的 首先加入自己的开机动画&#xff0c;制作过程看前面的部分 打开qssi.mk文件&#xff0c;在文件的最后加入内容 PRODUCT_CO…...

高中数学:数列-解数列不等式问题的常用放缩技巧(重难点)

一、放缩技巧 技巧1 例题 证明&#xff1a;Sn&#xff1c;1 解&#xff1a; 变形 解&#xff1a; 由于第一种情况&#xff0c;我们证明了Sn&#xff1c;1&#xff0c;n≥1&#xff0c;是从第一项就开始放缩的。 发现&#xff0c;无法精确到 3 4 \frac{3}{4} 43​ 这时&am…...

[图解]企业应用架构模式2024新译本讲解17-活动记录1

1 00:00:01,070 --> 00:00:04,180 下一个我们要说的就是 2 00:00:04,190 --> 00:00:06,740 活动记录模式了 3 00:00:07,640 --> 00:00:11,210 同样是数据源架构模式 4 00:00:12,300 --> 00:00:18,480 里面的一个&#xff0c;活动记录 5 00:00:18,490 --> 00…...

[C++深入] --- malloc/free和new/delete

1 new运算符的拓展 1.1 自由存储区与堆的概念 在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区。 自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。 new操作符从自由存储区(free st…...

Spcok测试代码抛异常场景

测试代码抛异常场景 ‍ class ExceptionSpec extends Specification {def validateService new ValidateService()Unrolldef "验证UserInfo"() {when: "调用校验方法"validateService.validateUser(user)then: "捕获异常并设置需要验证的异常值&qu…...

【漏洞复现】脸爱云一脸通智慧管理平台 SystemMng 管理用户信息泄露漏洞(XVE-2024-9382)

0x01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大&#xff0c;运行稳定&#xff0c;操作简单方便&#xff0c;用户界面美观&#xff0c;轻松统计数据的一脸通系统。无需安装&#xff0c;只需在后台配置即可在浏览器登录。 功能包括:系统管理中心、人员信息管理中心、设备…...

新手如何入门Web3?

一、什么是Web3&#xff1f; Web3是指下一代互联网&#xff0c;它基于区块链技术&#xff0c;致力于将各种在线活动变得更加安全、透明和去中心化。Web3是一个广义的概念&#xff0c;涵盖了包括数字货币、去中心化应用、智能合约等在内的多个方面。它的主要特点包括去中心化、…...

React.FC`<ChildComponentProps>`解释

代码场景 ParentComponent.tsx import React, { useState } from react; import ChildComponent from ./ChildComponent;function ParentComponent() {const [childData, setChildData] useState<string>();const handleChildData (data: string) > { // 可以直接…...

2024-06-24力扣每日一题

链接&#xff1a; 503. 下一个更大元素 II 题意 循环数组&#xff0c;找出每个元素的往后最近且大于它的元素 解&#xff1a; 今天没试暴力啊&#xff0c;大概率是过不了的 思路就是先找到最大的数&#xff0c;最大数的结果肯定是-1&#xff0c;然后倒着遍历数组&#xf…...

pyhon模块以及常用的第三方模块

import my_info as info print(info.name) info.show()from my_info import * print(name) show() pyhon中包的导入 import admin.my_admin as ad # 包名.模块名 admin是包名&#xff0c;my_admin是模块名print(ad.name) print(ad.info())from admin import my_admin as ad # …...

shell脚本—快速修改centos网络配置

shell-文本中自行修改想要的配置 #!/bin/bash# 网卡名称 eth"eth0"# IP 地址 ipaddr"192.168.1.100"# 子网掩码 netmask"255.255.255.0"# 网关 gateway"192.168.1.1"# 写入配置文件 echo "BOOTPROTOstatic" > /etc/sysc…...

C++的std--ranges中的技术优化排序

C20引入的std::ranges库为算法操作带来了革命性改进&#xff0c;尤其在排序优化领域展现出强大的现代性。本文将深入探讨std::ranges如何通过结构化绑定、惰性求值和定制化投影等技术&#xff0c;实现更高效、更灵活的排序操作&#xff0c;为开发者提供超越传统STL的解决方案。…...

Godep依赖自动发现机制:Go项目依赖管理的终极指南

Godep依赖自动发现机制&#xff1a;Go项目依赖管理的终极指南 【免费下载链接】godep dependency tool for go 项目地址: https://gitcode.com/gh_mirrors/go/godep Godep作为Go语言早期经典的依赖管理工具&#xff0c;通过自动发现与追踪项目依赖&#xff0c;为Go开发者…...

Hunyuan-MT-7B翻译终端实操手册:Pixel Language Portal的HUD状态监控与错误回溯机制详解

Hunyuan-MT-7B翻译终端实操手册&#xff1a;Pixel Language Portal的HUD状态监控与错误回溯机制详解 1. 像素语言传送门概览 Pixel Language Portal是一款基于腾讯Hunyuan-MT-7B大模型构建的创新翻译工具&#xff0c;将传统翻译体验重构为16-bit像素冒险风格。这款工具不仅提…...

SenseVoice语音识别模型在Windows/Linux双平台部署全攻略(附SpringBoot API封装技巧)

SenseVoice语音识别模型在Windows/Linux双平台部署全攻略&#xff08;附SpringBoot API封装技巧&#xff09; 语音识别技术正加速渗透企业级应用场景&#xff0c;从智能客服到会议纪要自动化&#xff0c;SenseVoice作为开箱即用的高精度模型&#xff0c;其跨平台兼容性尤为突出…...

3大突破策略:Bypass Paywalls Clean 2024全场景应用指南

3大突破策略&#xff1a;Bypass Paywalls Clean 2024全场景应用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代&#xff0c;付费墙已成为知识获取的主要障碍…...

Fedora 42 上 Podman 镜像拉取慢?5分钟搞定国内镜像源配置(保姆级教程)

Fedora 42 上 Podman 镜像拉取慢&#xff1f;5分钟搞定国内镜像源配置&#xff08;保姆级教程&#xff09; 刚接触 Fedora 42 的开发者们&#xff0c;是否经常被 Podman 拉取镜像时的蜗牛速度折磨得抓狂&#xff1f;每次看着进度条像老牛拉破车一样缓慢移动&#xff0c;心里是不…...

Cyber Engine Tweaks:解锁《赛博朋克2077》终极模组开发能力的5大核心功能 [特殊字符]

Cyber Engine Tweaks&#xff1a;解锁《赛博朋克2077》终极模组开发能力的5大核心功能 &#x1f680; 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks Cyber…...

从‘它又挂了’到‘稳如老狗’:我是如何用Prometheus+Grafana给自家小破站做监控的

从“它又挂了”到“稳如老狗”&#xff1a;我是如何用PrometheusGrafana给自家小破站做监控的 凌晨三点&#xff0c;手机突然响起钉钉告警——这已经是本周第三次被“502 Bad Gateway”的提示音吵醒。揉着惺忪睡眼重启Nginx时&#xff0c;我突然意识到&#xff1a;这个用业余时…...

PCB拼板工艺全解析:从设计到生产的核心要点

1. PCB拼板的核心价值与必要性PCB拼板是电子工程中一项看似简单却极为关键的工艺环节。作为一名从业十年的硬件工程师&#xff0c;我处理过上千款PCB设计&#xff0c;深刻体会到合理拼板对生产效率和成本控制的影响。简单来说&#xff0c;拼板就是将多块相同或不同的PCB按照特定…...

2026年3月房产中介房源管理系统使用体验评测

在房产中介行业数字化转型的浪潮中&#xff0c;一款合适的房产中介房源管理系统能帮助经纪人高效处理房客源、规范业务流程、降低运营成本&#xff0c;甚至直接提升成交率。本文基于一线实操体验&#xff0c;对4款主流房产中介房源管理软件进行客观评测&#xff0c;包括全房源系…...