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:"",
    }
AI 代码解读

改变state中的状态:

this.setState({
   
    name:"六卿",
    age:18
})
AI 代码解读

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

const [name,setName] = useState("")
const [age,setAge] = useState("")
AI 代码解读

改变state中的状态:

setName("六卿")
setAge(18)
AI 代码解读

看起来都还好,但是一旦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实现模块数据共享,类似全局状态管理但不推荐做全局管理

六卿

见贤思齐焉,见不贤内自省
AI 代码解读

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

目录
打赏
0
1
1
0
95
分享
相关文章
|
4月前
|
React Hooks:从基础到进阶的深入理解
React Hooks:从基础到进阶的深入理解
86 2
探究 React Hooks:如何利用全新 API 优化组件逻辑复用与状态管理
本文深入探讨React Hooks的使用方法,通过全新API优化组件逻辑复用和状态管理,提升开发效率和代码可维护性。
|
4月前
|
深入探索React Hooks:从useState到useEffect
深入探索React Hooks:从useState到useEffect
50 3
React Hooks 深入解析
React Hooks 深入解析
58 0
深入理解React Hooks,打造高效响应式UI
深入理解React Hooks,打造高效响应式UI
66 0
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
135 9
深入解析React Hooks:构建高效且可维护的前端应用
本文将带你走进React Hooks的世界,探索这一革新特性如何改变我们构建React组件的方式。通过分析Hooks的核心概念、使用方法和最佳实践,文章旨在帮助你充分利用Hooks来提高开发效率,编写更简洁、更可维护的前端代码。我们将通过实际代码示例,深入了解useState、useEffect等常用Hooks的内部工作原理,并探讨如何自定义Hooks以复用逻辑。
探索React Hooks:前端开发的革命性工具
【10月更文挑战第5天】探索React Hooks:前端开发的革命性工具
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
324 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
使用React和Redux构建高效的前端应用
使用React和Redux构建高效的前端应用
83 2