react 之 Class API

class API就是编写类组件,虽然react官方不在推荐使用,但是一般公司里维护的老项目里还是有的,可以简单了解下

1.类组件的基础结构

类组件就是通过js里的类来组织组件的代码的

1️⃣通过类属性state定义状态数据
2️⃣通过setState方法来修改状态数据
3️⃣通过render来写UI模版(JSX语法一致)

// Class API
import { Component } from "react"
class Counter extends Component {// 编写组件的逻辑代码// 1. 状态变量  2. 事件回调  3.UI(JSX)// 1. 定义状态变量state = {count: 0}// 2. 定义事件回调修改状态数据setCount = () => {// 修改状态数据this.setState({count: this.state.count + 1})}render () {return <button onClick={this.setCount}>{this.state.count}</button>}
}
function App () {return (<><Counter /></>)
}export default App

2.类组件的生命周期函数

概念:组件从创建到销毁的各个阶段自动执行的函数就是生命周期函数
在这里插入图片描述
1.componentDidMount:组件挂载完毕自动执行 —— 异步数据获取(组件渲染完毕执行一次,发送网络请求)
2.componentWillUnmount:组件卸载时自动执行 —— 清理副作用(比如清楚定时器,清除事件绑定)

// Class API 生命周期import { Component, useState } from "react"class Son extends Component {// 声明周期函数// 组件渲染完毕执行一次  发送网络请求componentDidMount () {console.log('组件渲染完毕了,请求发送起来')// 开启定时器this.timer = setInterval(() => {console.log('定时器运行中')}, 1000)}// 组件卸载的时候自动执行  副作用清理的工作 清除定时器 清除事件绑定componentWillUnmount () {console.log('组件son被卸载了')// 清除定时器clearInterval(this.timer)}render () {return <div>i am Son</div>}
}function App () {const [show, setShow] = useState(true)return (<>{show && <Son />}<button onClick={() => setShow(false)}>unmount</button></>)
}export default App

3.类组件的组件通信

概念:类组件和hooks编写的组件在组件通信的思想上完全一致
1️⃣父传子:直接通过prop子组件标签身上绑定父组件中的数据

// Class API 父子通信
import { Component } from "react"
// 子组件
class Son extends Component {render () {// 使用this.props.msgreturn <><div>我是子组件 {this.props.msg}</div></>}
}// 父组件
class Parent extends Component {state = {msg: 'this is parent msg'}render () {return <div>我是父组件<Son msg={this.state.msg}/></div>}
}
function App () {return (<><Parent /></>)
}export default App

2️⃣子传父:在子组件标签身上绑定父组件中的函数,子组件中调用这个函数传递参数

// Class API 父子通信import { Component } from "react"
// 1. 父传子  直接通过prop子组件标签身上绑定父组件中的数据即可
// 2. 子传父  在子组件标签身上绑定父组件中的函数,子组件中调用这个函数传递参数// 总结
// 1. 思想保持一致
// 2. 类组件依赖于this// 子组件
class Son extends Component {render () {// 使用this.props.msgreturn <><button onClick={() => this.props.onGetSonMsg('我是son组件中的数据')}>sendMsgToParent</button></>}
}// 父组件
class Parent extends Component {getSonMsg = (sonMsg) => {console.log(sonMsg)}render () {return <div>我是父组件<Son onGetSonMsg={this.getSonMsg} /></div>}
}function App () {return (<><Parent /></>)
}export default App

3.1总结

跟hooks思想保持一致
类组件依赖于this

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

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

相关文章

Docker Container(容器)

什么是容器 通俗地讲&#xff0c;容器是镜像的运行实体。镜像是静态的只读文件&#xff0c;而容器带有运行时需要的可写文件层&#xff0c;并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态。通俗地讲&#xff0c;容器…

使用Pycharm在本地调用chatgpt的接口

目录 1.安装环境 2.建立多轮对话的完整代码&#xff08;根据自己使用的不同代理需要修改端口&#xff08;port&#xff09;&#xff09; 3.修改代码在自己的Pycharm上访问chagpt的api并实现多轮对话&#xff0c;如果不修改是无法成功运行的。需要确定秘钥和端口以保证正常访…

注册虾皮买家号所需资料解析:一步步了解必备信息

为了在Shopee上获取更多的曝光和销售机会&#xff0c;许多卖家都在积极探索自动化注册的方法。使用Shopee买家通系统进行自动化注册&#xff0c;需要准备一些必要的资料&#xff0c;下面我们来详细了解一下&#xff1a; 手机号&#xff1a;在Shopee注册买家号时&#xff0c;手…

2024美赛C题保姆级分析完整思路代码数据教学

2024美国大学生数学建模竞赛C题保姆级分析完整思路代码数据教学 C题 Momentum in Tennis 网球中的动量 在2023年温布尔登男单决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡拉兹击败了36岁的诺瓦克德约科维奇。这是德约科维奇自2013年以来在温布尔登的首次失利&#xff0c;也…

linux+rv1126/imx6ull:opencv静态库交叉编译

目录 1.下载 2.准备工作 2.1安装依赖环境 2.2安装Cmake 2.3 解压opencv 3.Cmake设置 3.1文件夹选择 1&#xff09;进入源码根目录 2&#xff09;运行cmake 3&#xff09;选择目录 4&#xff09;进入配置界面 5&#xff09;查找编译器 6&#xff09;配置编译器 3.…

TCP 连接掉线自动重连

文章目录 TCP 连接掉线自动重连定义使用连接效果 TCP 接收数据时防止掉线。TCP 连接掉线自动重连。多线程环境下TCP掉线自动重连。 欢迎讨论更好的方法&#xff01; TCP 连接掉线自动重连 定义 定义一个类&#xff0c;以编写TCP连接函数Connect()&#xff0c;并且&#xff1a…

07.领域驱动设计:掌握整洁架构、六边形架构以及3种常见微服务架构模型的对比和分析

目录 1、概述 2、整洁架构 3、六边形架构 4、三种微服务架构模型的对比和分析 5、从三种架构模型看中台和微服务设计 5.1 中台建设要聚焦领域模型 5.2 微服务要有合理的架构分层 5.2.1 项目级微服务 5.2.2 企业级中台微服务 5.3 应用和资源的解耦与适配 6、总结 1、概…

Unity - 调节camera物理相机参数(HDRP)

在 “Hierarchy” 右键 -> Volume -> Global Volume new 一个 profile, 设置Mode为Pysical Camera 再点击camera组件&#xff0c;这时候设置 ISO、Shutter Speed、Aperture等参数值还会有效。

游戏APP开发:从创意到实现的全过程

随着智能手机的普及和移动互联网的发展&#xff0c;游戏APP市场日益繁荣。游戏APP开发已经成为一个热门行业&#xff0c;吸引了众多开发者和创业者的关注。本文将介绍游戏APP开发的全过程&#xff0c;包括创意、策划、设计、开发、测试和发布等环节。 一、创意 游戏APP开发的…

Hack The Box-Challenges-Misc-M0rsarchive

解压压缩包&#xff0c;里面是一张图片和一个新的zip文件 图片放大后的图案是----. 考虑到为莫斯密码&#xff0c;将其解密 密码为9&#xff0c;继续解压缩包 又是一张莫斯密码图加压缩包&#xff0c;写一段脚本去解密图片中的莫斯密码&#xff0c;并自动解压缩包 import re i…

【项目日记(七)】第三层: 页缓存的具体实现(上)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

XEX智能交易所USDT交易XEX是什么交易所

XEX交易所是数字货币交易平台&#xff0c;致力于为数字货币的爱好者提供一个安全、公平、开放、高效的区块链数字资产交易平台&#xff0c;数字货币指基于区块链技术和加密技术产生的&#xff0c;以去中心化形式发行、管理的&#xff0c;有一定价值的加密令牌、数字令牌或加密货…

CentOS 8最小安装和网络配置

文章目录 简介下载地址VMware 17创建虚拟机最小化安装拥有的外部命令yum源有问题网络配置开启SSH Server服务关闭防火墙设置host配置JDK环境完整参考 简介 CentOS 8的IOS如果下载DVD版本至少有10G 这里我们直接选择最小安装&#xff0c;因此选择最小系统boot版本 CentOS-8.5.21…

免费版XShell7下载安装

1.下载地址 家庭/学校免费 - NetSarang Websitehttps://www.xshell.com/zh/free-for-home-school/ 不同时期下载&#xff0c;版本会有不同&#xff0c;实时下载即可。 2.安装 Xshell和Xftp都要安装&#xff0c;点击下一步&#xff0c;直至安装完成。 3.邮箱注册&#xff0c;免…

Ajax 详解及其使用

Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种在客户端与服务器之间进行异步通信的技术&#xff0c;它允许网页在不重新加载整个页面的情况下&#xff0c;与服务器交换数据并更新部分网页内容。Ajax 的核心是XMLHttpRequest&#xff08;XHR&#xff09;对…

Mac brew教程

一、安装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"二、查看brew版本 brew -vbrew -v 三、搜索软件 命令格式&#xff1a;brew search 软件名 eg&#xff1a; brew search nginx四、安装软件 命令格…

(2)(2.11) RFD900

文章目录 前言 1 概述 2 主要功能 3 状态LED指示灯 4 接口 5 使用Mission Planner进行配置 6 支持不同国家/地区 7 讨论论坛 前言 RFD900 无线电调制解调器是一款高功率 900Mhz ISM 波段无线电调制解调器&#xff0c;设计用于远距离串行通信。据报道&#xff0c;其通信…

【代码随想录】LC 77. 组合

文章目录 前言一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、代码详解 前言 本专栏文章为《代码随想录》书籍的刷题题解以及读书笔记&#xff0c;如有侵权&#xff0c;立即删除。 一、题目 1、原题链接 77. 组合 2、题目描述 二、解题报告 1、思路分析 &#x…

保姆级的指针详解(超详细)

目录 一.内存和地址  1.初识指针 2.如何理解编址 二. 指针变量 三.指针的解引用操作符 1.指针变量的大小 四.指针变量类型的意义 五.指针的运算 1.指针加减整数 2.指针减指针 3.野指针 3.1指针未初始化 3.2指针越界访问 3.3指针指向的空间被提前释放 3.4如何规…

2024年电子数据取证“獬豸杯”比赛解析WP

2024年电子数据取证“獬豸杯”比赛解析WP 项目介绍&#xff1a;参赛对象:任务目标&#xff1a;第一部分&#xff1a;手机取证第二部分&#xff1a;计算机取证第二部分&#xff1a;APK分析 项目介绍&#xff1a; 简介&#xff1a; 竞赛为个人赛&#xff0c;工具自备&#xff0c…