React_函数式Hooks和Class比较优缺点

简介: React Hooks与Class组件都能返回JSX并接收props,但Hooks无`this`指向问题,用`useEffect`模拟生命周期,`memo`优化性能,状态更新用`useState`;Class组件通过生命周期方法、`PureComponent`或`shouldComponentUpdate`优化,状态用`this.state`和`this.setState`管理。

大家好,我是六卿。
在这里插入图片描述

Hooks and Class common ground(共同点)

一、无论是函数式组件return还是class组件render,它们都会返回一个reactDom节点,并且里面jsx的用法完全一致。不一样的地方在于this关键字的使用。

二、都可以实现声明周期,Hooks目前完全可以模拟出Class的生命周期。

三、都可以使用props接受父级传入的参数(无论是属性还是回调方法)。

四、…等等

在这里插入图片描述

Hooks and Class difference(不同点)

一、首先,声明周期的用法不同,Class的生命周期钩子直接在类中定义即可,可以直接使用,
但是在函数式组件我们只能通过Hooks的副作用函数来模拟声明周期,useEffect可以实现多个生命周期钩子。可以参考这篇文章:React中函数式Hooks之useEffect的使用

二、在性能优化方面:在类组件我们使用纯组件PureComponent或者shouldComponentUpdata来控制组件的更新,
在函数组件红我们可以使用memo实现纯组件的浅比较,同时可以使用useMemo和useCallback这两个hook来对属性和函数进行优化,需要子组件配合memo或者pureComponent。可以参考这篇文章:React中函数式Hooks之memo、useCallback的使用以及useMemo、useCallback的区别

三、在函数式组件中无需再考虑this指向的问题;

四、声明state的方法,在Class中我们可以直接在类中声明state对象:

state={
   
    name:"",
    age:"",
    }

改变state中的状态:

this.setState({
   
    name:"六卿",
    age:18
})

函数式组件中我们需要借助hook来实现,useState;
可以参考这篇文章:React中函数式Hooks之useState的使用

const [name,setName] = useState("")
const [age,setAge] = useState("")

改变state中的状态:

setName("六卿")
setAge(18)

看起来都还好,但是一旦state中的变量多了的话,看起来还是class的形式声明和赋值更简单一些,为了解决useState这个弊端,我们可以使用useReducer来实现但组件redux。可以参考这篇文章:Hooks中使用useReducer实现表单数据的提交,解决多次使用useState的问题

其实还有很多,比如location和history的使用都是从react-dom中解构出来的hook,等等吧不说了,该干活了。

以上观点都是包括但不仅限于。
在这里插入图片描述

其他文章

1.hooks实现toDoList
2.hooks实现左添右减
3.React实现添加多行输入框(点击一行增加一行)
4.React页面跳转取消上一个页面的所有请求
5.React配合axios请求拦截校验session,403跳转至登陆页面
6.Hooks使用createStore、Provider、useSelector、useDispatch实现connect功能
7.Hooks使用useReducer、createContext 、useContext实现模块数据共享,类似全局状态管理但不推荐做全局管理

六卿

见贤思齐焉,见不贤内自省

个人见解,不对之处还请斧正。

目录
相关文章
|
29天前
|
前端开发 JavaScript
React Hooks 全面解析
【10月更文挑战第11天】React Hooks 是 React 16.8 引入的新特性,允许在函数组件中使用状态和其他 React 特性,简化了状态管理和生命周期管理。本文从基础概念入手,详细介绍了 `useState` 和 `useEffect` 的用法,探讨了常见问题和易错点,并提供了代码示例。通过学习本文,你将更好地理解和使用 Hooks,提升开发效率。
64 4
|
7天前
|
前端开发 JavaScript
深入探索React Hooks:从useState到useEffect
深入探索React Hooks:从useState到useEffect
|
17天前
|
前端开发 JavaScript 开发者
“揭秘React Hooks的神秘面纱:如何掌握这些改变游戏规则的超能力以打造无敌前端应用”
【10月更文挑战第25天】React Hooks 自 2018 年推出以来,已成为 React 功能组件的重要组成部分。本文全面解析了 React Hooks 的核心概念,包括 `useState` 和 `useEffect` 的使用方法,并提供了最佳实践,如避免过度使用 Hooks、保持 Hooks 调用顺序一致、使用 `useReducer` 管理复杂状态逻辑、自定义 Hooks 封装复用逻辑等,帮助开发者更高效地使用 Hooks,构建健壮且易于维护的 React 应用。
28 2
|
22天前
|
前端开发 开发者
React 提供的其他重要 Hooks
【10月更文挑战第20天】React 提供了一系列强大的 Hooks,除了 `useRef` 之外,还有许多其他重要的 Hooks,它们共同构成了函数式组件开发的基础。
35 6
|
29天前
|
前端开发 JavaScript 开发者
React Hooks
10月更文挑战第13天
34 1
|
17天前
|
JavaScript 前端开发 数据管理
React和Vue的优缺点
【10月更文挑战第23天】React和Vue的优缺点
10 0
|
1月前
|
前端开发 JavaScript 开发者
深入理解React Hooks:提升前端开发效率的关键
【10月更文挑战第5天】深入理解React Hooks:提升前端开发效率的关键
|
10天前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
36 9
|
1月前
|
前端开发
深入解析React Hooks:构建高效且可维护的前端应用
本文将带你走进React Hooks的世界,探索这一革新特性如何改变我们构建React组件的方式。通过分析Hooks的核心概念、使用方法和最佳实践,文章旨在帮助你充分利用Hooks来提高开发效率,编写更简洁、更可维护的前端代码。我们将通过实际代码示例,深入了解useState、useEffect等常用Hooks的内部工作原理,并探讨如何自定义Hooks以复用逻辑。
|
1月前
|
前端开发 JavaScript API
探索React Hooks:前端开发的革命性工具
【10月更文挑战第5天】探索React Hooks:前端开发的革命性工具