Day5:react函数组件与类组件

陈泰
• 阅读 612

目标: 持续输出!每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。

主要面向群体:前端开发工程师(初、中、高级)、应届、转行、培训、自学等同学

Day4-今日话题

react函数组件和类组件的区别,将从以下七个角度介绍:

  1. 语法和定义
  2. 内部状态管理
  3. 生命周期
  4. 性能
  5. 可读性和维护性
  6. 上下文
  7. 集成状态管理库

1. 语法和定义:

函数式组件: 使用函数来定义,接收props作为参数,并返回一个React元素。

function FunctionalComponent(props) {
  return <div>{props.message}</div>;
}

类组件: 使用类来定义,继承自React.Component,使用render 方法返回React元素。

class ClassComponent extends React.Component {
  render() {
    return <div>{this.props.message}</div>;
  }
}

2. 内部状态管理:

函数式组件: 早期函数式组件无法自己管理状态。使用Hooks后,可以使用useState来在函数式组件内部管理状态。

类组件: 可以通过this.state来管理内部状态,可以在constructor中初始化状态,然后使用setState方法来更新状态。

3. 生命周期:

函数式组件: 早期函数式组件没有生命周期方法。使用Hooks后,可以使用useEffect来模拟生命周期行为,如componentDidMount
componentDidUpdate等。

类组件: 拥有完整的生命周期方法,包括componentDidMountcomponentDidUpdatecomponentWillUnmount等。

4. 性能:

函数式组件:通常比类组件性能更好,因为函数组件不需要创建类的实例,从而减少了内存和性能开销。

类组件: 需要创建类的实例,可能会导致轻微的性能损失。

5. 可读性和维护性:

函数式组件: 通常更简洁,适合用于无状态、纯UI渲染的情况,代码更易于理解和维护。

类组件: 可能会显得冗长,因为需要定义类、构造函数和render方法,但在复杂的场景中提供了更多的结构。

6. 上下文(Context):

函数式组件: 可以通过useContext Hook来访问上下文。

类组件: 可以通过this.context来访问上下文。

7. 集成状态管理库:

函数式组件: 可以轻松地集成Redux或其他状态管理库,因为它们可以在任何地方使用Hooks

类组件: 也可以集成Redux等库,但可能需要使用高阶组件(HOC)或使用connect方法。


下一篇文章将分享React相关的知识点,欢迎点赞、关注、转发~
Day5:react函数组件与类组件

本文由mdnice多平台发布

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java native方法与JNI实现
<divid"cnblogs\_post\_body"class"blogpostbody"<p<spanstyle"color:ff0000"<strongnative方法定义:</strong</span&nbsp;&nbsp;&nbsp;&nbsp;</p<p&nbsp;&nbsp;&nbsp;简单地讲
Wesley13 Wesley13
3年前
java连接neo4j
<divid"cnblogs\_post\_body"class"blogpostbody"<p呼、博客要落灰了</p<p记录一下Java连接neo4j的问题。</p<p<spanstyle"fontsize:16px;"<strong首先是neo4j的下载和配置,基本参考https://blog.csdn.net/ap
Easter79 Easter79
3年前
tomcat调试servlet
有时候web程序会引用到workspace下面的其它工程,在tomcat调试的时候,经常会出现找不到所引用的jar的问题。 而抛出的异常也很诡异,有时候会是:<strongclassNotFound</strong,或者<strongNoClassDefineFound</strong, 有时候甚至会是<bXXXcan'tbe
DevOpSec DevOpSec
4年前
Linux主机安全配置
1.安全配置规范1.身份鉴别1.账号检查<tableborder"1"cellspacing"0"style"width:426.1pt;"<tbody<tr<tdstyle"width:113.4pt;"<pstyle"marginleft:0pt;"<strong<strong安全配置编号
Stella981 Stella981
3年前
React Hooks实现异步请求实例—useReducer、useContext和useEffect代替Redux方案
<blockquote本文是学习了2018年新鲜出炉的ReactHooks提案之后,针对<strong异步请求数据</strong写的一个案例。注意,本文假设了:<br1.你已经初步了解<codehooks</code的含义了,如果不了解还请移步<ahref"https://reactjs.org/docs/hooksintro.html
Wesley13 Wesley13
3年前
Java面试
<divclass"htmledit\_views"id"content\_views"<pid"maintoc"<strong目录</strong</p<pid"Java%E5%9F%BA%E7%A1%80%EF%BC%9Atoc"style"marginleft:40px;"<ahref"Java%E5%
Wesley13 Wesley13
3年前
Java 9版本之后Base64Encoder和Base64Decoder无法继续使用解决办法
<divclass"htmledit\_views"id"content\_views"<p在项目开发过程中,因为重装系统,安装了Java10版本,发现sun.misc.Base64Encoder和sun.misc.Base64Decoder无法使用。</p<p<br</p<p<strong原因:</strong</p<p查看
Wesley13 Wesley13
3年前
DNS域传送漏洞
DNS域传送漏洞图片展示现象<strong这里借用一张图片,现在DNS域传送漏洞很不好找了!</strong!(https://oscimg.oschina.net/oscnet/c164811810ca377871735d7128bac2521b5.png)
Wesley13 Wesley13
3年前
(寒假开黑gym)2017
<ahref"https://codeforces.com/gym/101933/"target"\_blank"style"fontsize:24px;"<strong传送门</strong</a付队!(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.
Easter79 Easter79
3年前
Tomcat安装、配置、优化及负载均衡详解
<divid"cnblogs\_post\_body"class"blogpostbody"<p<strong原文地址:https://www.cnblogs.com/rocomp/p/4802396.html</strong</p<p<strong一、常见JavaWeb服务器</strong</p<div<strong&
Wesley13 Wesley13
3年前
Java集合及concurrent并发包总结(转)
<divid"cnblogs\_post\_body"class"blogpostbody"<p<strong1.集合包</strong</p<p&nbsp;&nbsp;集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放KeyValue形式的键值对。</p<p