react-创建组件的两种方式

server/2024/9/23 9:00:14/

一、函数式组件

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>hello_react</title>
</head><body><!-- 准备好一个容器 --><div id="test"></div><!-- 引入react核心库 --><script type="text/javascript" src="/react-development.js"></script><!-- 引入react-dom,用于支持react操作DOM --><script type="text/javascript" src="/react-dom-development.js"></script><!-- 引入babel,用于将jsx转为js --><script type="text/javascript" src="/babel.min.js"></script><script type="text/babel">javascript">// 1.创建函数式组件function Demo() {return <h2>我是用函数定义的组件</h2>}// 2.渲染组件到页面ReactDOM.render(<Demo />, document.getElementById('test'))/*** 执行了ReactDOM.render(<MyComponent/>.....)之后,发生了什么?* 1.React解析组件标签,找到MyComponent组件。* 2.发现组件是使用函数定义的,随后调用该函数,将返回的虚拟DOM转为真实DOM,随后呈现在页面中。* */</script>
</body></html>

二、类式组件

类式组件的话是通过es6的语法class来实现,通过通过创建一个类来继承React.Component父类,在定义的类组件中定义一个render()方法,该方法是放在该类实例对象的原型对象上的,ReactDOM.render内部通过new出来该类的实例,并通过该实例调用原型链上的render方法,将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>hello_react</title>
</head><body><!-- 准备好一个容器 --><div id="test"></div><!-- 引入react核心库 --><script type="text/javascript" src="/react-development.js"></script><!-- 引入react-dom,用于支持react操作DOM --><script type="text/javascript" src="/react-dom-development.js"></script><!-- 引入babel,用于将jsx转为js --><script type="text/javascript" src="/babel.min.js"></script><script type="text/babel">javascript">// 1.创建类式组件class MyComponent extends React.Component {render() {console.log(this);// render是放在哪里的?MyComponent的原型对象上,供实例使用。// render()中的this指向的是MyComponent组件实例对象return <h2>我是用函数定义的组件</h2>}}// 2.渲染组件到页面ReactDOM.render(<MyComponent/>,document.getElementById('test'))/*** 执行了ReactDOM.render(<MyComponent/>.....)之后,发生了什么?* 1.React解析组件标签,找到MyComponent组件。* 2.发现组件是使用类定义的,随后new出来该类的实例,并通过该实例调用原型链上的render方法* 3.将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。*/</script>
</body></html>

http://www.ppmy.cn/server/17156.html

相关文章

Docker共享Nginx配置文件

先去一个容器中&#xff0c;找到Nginx.conf配置文件的目录 去创建一个容器&#xff0c;将容器中存放nginx.conf的目录挂载到宿主机存放nginx.conf目录上 去宿主机中找到nginx/html/index.html目录位置 进入宿主机的index.html中修改页面内容 curl 192.168.91.106访问一下 进入…

LVS + KeepAlived实现高可用负载均衡

上文已经介绍了lvs和keepalived的基本概念和用法&#xff0c;下面直接做lvs和keepalived来实现高可用负载均衡 配置&#xff1a; 主机名ip系统用途client172.16.147.1mac客户端lvs-keepalived-master172.16.147.154centos7.5分发器lvs-keepalived-slave172.16.147.155centos7…

vue下载文件时显示进度条

1.单个下载&#xff08;开始是导出按钮 下载显示进度条&#xff09; html <el-button click.stop"exportReport(scope.row, scope.index)" v-if"!scope.row.schedule" icon"el-icon-download"size"small" type"text"styl…

网络安全(黑客技术)—2024最新自学手册

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…

【数据结构-串-数组-广义表】

目录 1 串-理解1.1 串的抽象定义&#xff1a;-理解1.2 串的存储结构-不断掌握1.2.1 顺序存储结构&#xff1a;1.2.2 链式存储结构&#xff1a; 1.3 串的模式匹配算法&#xff1a;-掌握1.3.1 BF暴力求解算法-代码 -掌握1.3.2 KMP求解算法-代码--掌握 2 数组-不断掌握2.1 顺序存储…

C语言进阶课程学习记录 - 函数的意义

C语言进阶课程学习记录 - 函数的意义 实验-声明与定义小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 实验-声明与定义 //global.c #include <stdio.h>//int g_var 10;//case1float g_var …

Vitis AI 迁移学习并部署在DPU中

目录 1. 本文目的 2. ResNet18介绍 3. 迁移学习 4. 量化配置文件 5. 模型编译&#xff1a; 6. 总结 1. 本文目的 使用迁移学习的方法&#xff0c;将预训练的resnet18模型从原来的1000类分类任务&#xff0c;改造为适应自定义的30类分类任务。 2. ResNet18介绍 ResNet1…

matlab新手快速上手6(引力搜索算法)

本文根据一个较为简单的matlab引力搜索算法框架详细分析蚁群算法的实现过程&#xff0c;对matlab新手友好&#xff0c;源码在文末给出。 引力搜索算法简介&#xff1a; 引力搜索算法是一种启发式优化算法&#xff0c;最初于2009年由伊朗的Esmat Rashedi、Hossein Nezamabadi-p…