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

【React】函数式组件和类式组件的用法和逻辑

组件的使用

当应用是以多组件的方式实现,这个应用就是一个组件化的应用
注意:

  1. 组件名必须是首字母大写
  2. 虚拟DOM元素只能有一个根元素
  3. 虚拟DOM元素必须有结束标签 < />
    渲染类组件标签的基本流程
  4. React 内部会创建组件实例对象
  5. 调用render()得到虚拟 DOM ,并解析为真实 DOM
  6. 插入到指定的页面元素内部

函数式组件

//1.先创建函数,函数可以有参数,也可以没有,但是必须要有返回值 返回一个虚拟DOM
function Welcome(props) {return <h1>Hello, {props.name}</h1>;
}
//2.进行渲染
ReactDOM.Render(<Welcom name = "ljc" />,document.getElementById("div"));

上面的代码经历了以下几步

  1. 我们调用 ReactDOM.render() 函数,并传入 作为参数。
  2. React 调用 Welcome 组件,并将 {name: ‘ljc’} 作为 props 传入。
  3. Welcome 组件将 Hello, ljc 元素作为返回值。
  4. React DOM 将 DOM 高效地更新为 Hello,ljc。

类式组件

class MyComponent extends React.Component {// 如果组件不需要接收props,推荐这样写,不用写构造器state = {isHot:false}render() {const {isHot} = this.statereturn <h1 onClick={this.changeWeather}>今天天气很{isHot?'炎热':'凉爽'}</h1>}//以下代码,直接把函数赋值给变量,相当于在类的实例对象上添加了这么一个方法,另外,箭头函数自身没有this,会逐层往上找,找到类的实例对象(注意这里必须是箭头函数)//自定义方法要用赋值语句加箭头函数,方便让this指向当前实例对象changeWeather = ()=>{const isHot = this.state.isHotthis.setState({isHot:!isHot})}
}
ReactDOM.render(<MyComponent/>,document.querySelector('.test'))

注意点:

  1. 组件中的 render 方法中的 this 为组件实例对象
  2. 组件自定义方法中由于开启了严格模式,this 指向 undefined 如何解决

通过 bind 改变 this 指向
推荐采用箭头函数,箭头函数的 this 指向

  1. state 数据不能直接修改或者更新

相关文章:

【React】函数式组件和类式组件的用法和逻辑

组件的使用 当应用是以多组件的方式实现&#xff0c;这个应用就是一个组件化的应用 注意&#xff1a; 组件名必须是首字母大写虚拟DOM元素只能有一个根元素虚拟DOM元素必须有结束标签 < /> 渲染类组件标签的基本流程React 内部会创建组件实例对象调用render()得到虚拟 …...

题目 1061: 二级C语言-计负均正

从键盘输入任意20个整型数&#xff0c;统计其中的负数个数并求所有正数的平均值。 保留两位小数 样例输入 1 2 3 4 5 6 7 8 9 10 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 样例输出 10 5.50 解题思路&#xff1a; 如题所示&#xff0c;输入20个正负数&#xff0c;---》求付数的个…...

数位和(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…...

[牛客复盘] 牛客周赛round13 20230924

[牛客复盘] 牛客周赛round13 20230924 总结矩阵转置置2. 思路分析3. 代码实现 小红买基金1. 题目描述2. 思路分析3. 代码实现 小红的密码修改1. 题目描述2. 思路分析3. 代码实现 小红的转账设置方式1. 题目描述2. 思路分析3. 代码实现 小红打boss1. 题目描述2. 思路分析3. 代码…...

mybatsi-MyBatis的逆向工程

mybatsi-MyBatis的逆向工程 一、前言二、创建逆向工程的步骤1.添加依赖和插件2.创建MyBatis的核心配置文件3.创建逆向工程的配置文件4.执行MBG插件的generate目标 一、前言 正向工程&#xff1a;先创建Java实体类&#xff0c;由框架负责根据实体类生成数据库表。 Hibernate是支…...

转转闲鱼交易猫链接源码 支持二维码收款

最新仿二手闲置链接源码 后台一键生成链接&#xff0c;后台管理教程&#xff1a;解压源码&#xff0c;修改数据库config/Congig 不会可以看源码里有教程 下载程序&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3...

Python爬虫基础(三):使用Selenium动态加载网页

文章目录 系列文章索引一、Selenium简介1、什么是selenium&#xff1f;2、为什么使用selenium3、安装selenium&#xff08;1&#xff09;谷歌浏览器驱动下载安装&#xff08;2&#xff09;安装selenium 二、Selenium使用1、简单使用2、元素定位3、获取元素信息4、交互 三、Phan…...

Linux系统下安装Mysql

1、执行命令&#xff1a;rpm -qa | grep -i mysql&#xff0c;先查看系统之前是否有安装相关的rpm包&#xff0c;如果有&#xff0c;会显示类似下面的信息&#xff1b; 2、通过命令yum -y remove mysql-*  一次性删除系统上所有相关的rpm包&#xff0c;或者通过命令yum -y …...

Jenkins学习笔记1

CI 服务器&#xff1a; 认识Jenkins&#xff1a; Jenkins是一个可扩展的持续集成&#xff08;CI&#xff09;引擎&#xff0c;是一个开源项目&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使得软件持续集成变成可能。Jenkins非常易于安装和配置&#xff0c;简单易…...

注意力机制

概念没什么好说的&#xff0c;反正大家都会说&#xff0c;具体实战怎么写才是最为重要的 1.自注意力 假设有一组数据&#xff0c;都是一维的向量&#xff0c;这个向量可能是一个样本&#xff0c;可能是其他什么&#xff0c;都无所谓。 假设有一组一维向量x1,x2,x3,x4,x5; 第…...

JVM-Java字节码技术笔记

Java字节码技术 Java字节码是java代码编译后的中间代码格式&#xff0c;JVM需要读取并解析字节码才能执行相应的任务 获取字节码简介&#xff1a;由单字节(byte)的指令组成 操作码&#xff08; 指令&#xff09;, 主要由类型前缀和操作名称两部分组成。根据指令的性质&#xf…...

C++ 友元、重载、继承、多态

友元 关键字&#xff1a;friend 友元的三种实现 全局函数做友元类做友元成员函数做友元 全局函数做友元 //建筑物类 class Building {//goodGay全局函数是Building好朋友&#xff0c;可以访问Building中私有成员friend void goodGay(Building& building); public:Build…...

Spring Boot 日志文件

前言 本篇博客主要介绍自定义的日志打印、日志的级别高低、如何保存日志等等..... 一、日志是什么&#xff1f;日志有什么用&#xff1f; 日志就是我们控制台上输出的内容&#xff0c;控制台上的输出的信息就是日志信息&#xff0c;如下所示&#xff1a; 日志有什么用&#x…...

vulhub venom

文章目录 靶场环境信息收集ftp服务二、信息利用三、任意文件上传三 sudo提权靶场环境 `vmware 靶场信息:https://www.vulnhub.com/entry/venom-1,701/ 下载地址:https://download.vulnhub.com/venom/venom.zip 新建虚拟机打开下载后的ovf文件 遇见导入失败合规性检查时,重试…...

量化交易之One Piece篇 - linux - 定时任务(重启服务器、执行程序、验证)

linux 执行命令: crontab -e 0 5 * * 1-5 sudo /sbin/shutdown -r now 0 17 * * 1-5 sudo /sbin/shutdown -r now 45 8 * * 1-5 cd /home/ubuntu/onepiece/bin/datacore && ./datacore 45 20 * * 1-5 cd /home/ubuntu/onepiece/bin/datacore && ./datacore 以…...

Qt5开发及实例V2.0-第二十三章-Qt-多功能文档查看器实例

Qt5开发及实例V2.0-第二十三章-Qt-多功能文档查看器实例 第23章 多功能文档查看器实例23.1. 简介23.2. 界面与程序框架设计23.2.1. 图片资源23.2.2. 网页资源23.2.3. 测试用文件 23.3 主程序代码框架23.4 浏览网页功能实现23.4.1 实现HtmIHandler处理器 23.5. 部分代码实现23.5…...

爬虫笔记_

爬虫简介 爬虫初始深入 爬虫在使用场景中的分类 通用爬虫&#xff1a; 抓取系统重要组成部分。抓取的是一整张页面数据 聚焦爬虫&#xff1a; 是建立在通用爬虫的基础上。抓取的是页面中特定的局部内容。 增量式爬虫 监测网站中数据更新的情况。只会抓取网站中最新更新出来的…...

Spring设计模式,事务管理和代理模式的应用

扩充&#xff1a;贝叶斯定理答案见底。 设计模式对关于面向对象问题的具体解决方案&#xff0e; 1&#xff0c;单例多例 在设计单例模式时&#xff0c;要注意两个点 1.构造方法要私有 2.成员变量要私有 3.创建对象所用的方法要被synchronized修饰.(因为方法体中会涉及到判断当…...

基于海康Ehome/ISUP接入到LiveNVR实现海康摄像头、录像机视频统一汇聚,做到物联网无插件直播回放和控制

LiveNVR支持海康NVR摄像头通EHOME接入ISUP接入LiveNVR分发视频流或是转GB28181 1、海康 ISUP 接入配置2、海康设备接入2.1、海康EHOME接入配置示例2.2、海康ISUP接入配置示例 3、通道配置3.1、直播流接入类型 海康ISUP3.2、海康 ISUP 设备ID3.3、启用保存3.4、接入成功 4、相关…...

Linux下git安装及使用

Linux下Git使用 1. git的安装 sudo apt install git安装完&#xff0c;使用git --version查看git版本 2. 配置git git config --global user.name "Your Name“ ##配置用户 git config --global user.email emailexample.com ##配置邮箱git config --global --list …...

千问3.5-2B 黑马点评项目AI赋能:智能推荐与评论分析实战

千问3.5-2B 黑马点评项目AI赋能&#xff1a;智能推荐与评论分析实战 1. 项目背景与痛点分析 "黑马点评"作为本地生活服务领域的知名平台&#xff0c;每天面临三大核心挑战&#xff1a;商铺推荐千人一面缺乏个性、海量用户评论难以有效挖掘、客服咨询重复率高响应慢…...

Unity 2018/2019下,Mega-Fires 3.48插件20种变形效果实测与避坑指南

Unity 2018/2019下Mega-Fires 3.48插件20种变形效果深度解析与实战避坑 在Unity 2018和2019版本中&#xff0c;Mega-Fires 3.48插件以其强大的Mesh变形能力吸引了大量开发者。这款插件提供了20种独特的变形效果&#xff0c;从基础的弯曲、扭曲到复杂的自由变形和翻页效果&#…...

用Minimalmodbus玩转PLC通信:从环境配置到寄存器读写的完整流程

MinimalModbus实战指南&#xff1a;高效连接西门子PLC的Python自动化方案 工业自动化领域的数据采集常面临设备资源有限、协议兼容性复杂等挑战。作为一款专为嵌入式系统优化的轻量级库&#xff0c;MinimalModbus以其简洁的API和极低的内存占用&#xff0c;成为连接西门子S7系列…...

3大跨平台游戏开发库部署方案:从环境搭建到性能优化的全流程指南

3大跨平台游戏开发库部署方案&#xff1a;从环境搭建到性能优化的全流程指南 【免费下载链接】raylib A simple and easy-to-use library to enjoy videogames programming 项目地址: https://gitcode.com/GitHub_Trending/ra/raylib 跨平台游戏开发库raylib凭借其轻量级…...

StructBERT中文语义匹配系统开发者案例:语义向量用于排序模型特征

StructBERT中文语义匹配系统开发者案例&#xff1a;语义向量用于排序模型特征 1. 项目核心价值&#xff1a;从“虚高”到“精准”的跨越 如果你做过搜索推荐或者内容去重&#xff0c;大概率遇到过这样的头疼事&#xff1a;两段明明不相关的文本&#xff0c;用传统的语义模型一…...

ViGEmBus:终极Windows虚拟手柄驱动完整使用教程

ViGEmBus&#xff1a;终极Windows虚拟手柄驱动完整使用教程 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款革命性的Windows内核级虚拟手柄驱…...

3步攻克NCM加密壁垒:让音乐文件重获跨设备自由

3步攻克NCM加密壁垒&#xff1a;让音乐文件重获跨设备自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 当你从音乐平台下载的NCM格式文件无法在车载音响、MP3播放器等设备播放时&#xff0c;是否感到束手无策&#xff1f;ncmdump…...

小白也能懂!Meta-Llama-3-8B-Instruct快速上手全攻略

小白也能懂&#xff01;Meta-Llama-3-8B-Instruct快速上手全攻略 1. 为什么选择Meta-Llama-3-8B-Instruct Meta-Llama-3-8B-Instruct是Meta公司2024年4月开源的中等规模语言模型&#xff0c;特别适合想要体验高质量AI对话但硬件配置有限的开发者。这个80亿参数的模型在单张RT…...

影墨·今颜模型Win11/Win10系统UI风格适配与生成测试

影墨今颜模型Win11/Win10系统UI风格适配与生成测试 最近在折腾桌面美化&#xff0c;突然冒出一个想法&#xff1a;现在AI生成图片这么厉害&#xff0c;能不能让它直接帮我生成一套风格统一的系统UI元素呢&#xff1f;比如Win11那种清爽现代的图标&#xff0c;或者Win10那种经典…...

OpenClaw学术助手:Qwen2.5-VL-7B论文图表解析与总结

OpenClaw学术助手&#xff1a;Qwen2.5-VL-7B论文图表解析与总结 1. 为什么需要学术文献自动化处理 作为一名经常需要阅读大量文献的研究人员&#xff0c;我深刻体会到手动处理论文的痛点。每次下载几十篇PDF&#xff0c;光是浏览摘要筛选出相关文献就要耗费半天时间。更不用说…...