React中功能组件和类组件之间的区别 - Web前端
作者:98wpeu发布时间:2026-09-07分类:网页前端技术浏览:2
导读:制作一个计数器应用程序,当用户使用“功能”和“类”组件单击“添加”按钮时,该应用程序将增加计数数量。功能组件:功能组件是在react中工作时会遇到的一些更常见的组件。这些只是jav...

制作一个计数器应用程序,当用户使用“功能”和“类”组件单击“添加”按钮时,该应用程序将增加计数数量。
功能组件:功能组件是在react中工作时会遇到的一些更常见的组件。这些只是javascript函数。我们可以通过编写JavaScript函数来创建React的功能组件。
语法:
const Car=()=> {
return <h2>Hi, I am also a Car!</h2>;
}例子:
Javascript:
import React ,{useState} from "react";
const functionalComponent=()=>{
const[count , setCount]=useState(0);
const increase=()=>{
setCount(count+1);
}
return (
<div style={{margin:'50px'}}>
<h1>Welcome to Geeks for Geeks </h1>
<h3>Counter APP using Functional Componenet : </h3>
<h2>{count}</h2>
<button onClick={increase}>Add</button>
</div>
)
}
Export default FunctionalComponent;输出结果:

类组件:这是大多数用ReactJS构建的现代WEB应用程序的基础。这些组件是简单的类(由向应用程序添加功能的多个功能组成)。
语法:
class Car extends React.Component {
render() {
return <h2>Hi, I am a Car!</h2>;
}
}例子:
javascript:
import React from "react";
class ClassComponent extends React.Component{
constructor(){
super();
this.state={
count :0
};
this.increase=this.increase.bind(this);
}
increase(){
this.setState({count : this.state.count +1});
}
render(){
return (
<div style={{margin:'50px'}}>
<h1>Welcome to Geeks for Geeks </h1>
<h3>Counter app using Class Componenet : </h3>
<h2> {this.state.count}</h2>
<button onClick={this.increase}> Add</button>
</div>
)
}
}
export default ClassComponent;输出结果:

挂钩是React 16.8中的新增功能。它们使您无需编写类即可使用状态和其他React功能。
在上面的示例中,对于功能组件,我们使用钩子(useState)来管理状态。如果编写功能组件并意识到需要向其添加一些状态,则以前必须将其转换为类组件。现在,您可以在现有功能组件内部使用一个Hook来管理状态,而无需将其转换为Class组件。可以使用Function组件中的Hooks代替Class,因为这是一种管理状态的简便得多的方法。挂钩只能在功能组件中使用,不能在类组件中使用。
功能组件与类组件:
| 功能组件 | 类组件 |
| 功能组件只是一个普通的javaScript函数,它接受props作为参数并返回React元素。 | 一个类组件需要您从React扩展。组件并创建一个渲染函数,该函数返回一个React元素。 |
| 功能组件中没有使用渲染方法。 | 它必须具有返回html的render()方法 |
| 也称为无状态组件,因为它们仅接受数据并以某种形式显示,它们主要负责呈现UI。 | 也称为有状态组件,因为它们实现逻辑和状态。 |
| React生命周期方法(例如componentDidMount)不能在功能组件中使用。 | 可以在类组件内部使用React生命周期方法(例如componentDidMount)。 |
- 上一篇:使用React Hooks和TypeScript - Web前端
- 下一篇:已经是最后一篇了
相关推荐
- 使用React Hooks和TypeScript - Web前端
- 带大家学习一款很实用的Vue多选列表组件:multiselect - Web前端
- 如何将您的应用程序从Express迁移到Fastify - Web前端
- 如何在MySQL数据库中使用JSON数据字段 - Web前端
- 产品经理为何要学习Web前端编码 - Web前端
- Vue内置组件:熟悉keep-alive的来龙去脉 - Web前端
- React开发:提交输入框input值的小应用 - Web前端
- 使用现代JavaScript和Web组件构建Web应用程序 - Web前端
- Windows 10:绘画和截图工具现在可以从Microsoft Store更新 - Web前端
- 为什么会报错SyntaxError: JSON.parse: bad parsing? - Web前端
- 网页前端技术排行
-
- 1[Web前端]用javascript实现默认图片替代未显示的图片 - Web前端
- 2分析Iconfont-阿里巴巴矢量常用图标库 - Web前端
- 3jQuery实例教程:制作网页中可折叠的面板 - Web前端
- 4【第六章】Foundation之按钮和下拉功能 - Web前端
- 5基于jquery的滚动条滚动固定div(附演示下载) - Web前端
- 6jQuery编写widget的一些技巧分享 - Web前端
- 7分享精心挑选的12款优秀jQuery Ajax分页插件和教程 - Web前端
- 8在Mac/PC上远程调试iPhone/iPad上的网页 - Web前端
- 9jQuery实现鼠标移到元素上动态提示消息框效果 - Web前端
- 最近发表
-
- WordPress随机显示特色图片插件:Random Post Thumbnails
- KeePass实现Chrome浏览器自动填充密码方法一
- LNMP一键包nginx 301强制跳转到https教程
- KeePass实现Chrome浏览器自动填充密码方法二
- #建站# 免费的VPS管理软件Xshell8/Xftp8中文版下载
- 使用Xshell 8连接VPS教程_电脑登录vps的方法
- WordPress评论界面添加烟花????效果
- 不同浏览器书签同步方案:坚果云+Floccus_详细使用教程
- iOS端KeePassXC客户端APP:Strongbox Password Safe
- 给WordPress评论中的Gravatar头像图片添加ALT属性


