react
大约 1 分钟
react
函数式组件和class 组件的区别
1.设计思想不同:函数式组件是函数式编程思想,而类组件是面向对象编程思想。面向对象编程将属性和方法封装起来,屏蔽很多细节,不利于测试
2.类组件有状态管理,而函数式组件的状态需要使用useState自定义。
3.创建组件时,函数式组件只需调用函数即可创建组件,而类组件必须先实例化一个对象,然后通过这个实例化对象调用render函数来创建组件
4.类组件是用生命周期钩子函数来实现业务逻辑的,而函数式组件使用react Hooks来实现业务逻辑。
5.类组件shouldComponentUpdate这个生命周期,通常我们在这个生命周期中进行组件的优化,通过判断前一个props和当前的props是否有变化来判断组件是否需要渲染,或者通过PureComponent实现;那么在函数组件中我们通过React.memo()来实现,使用了memo包裹的子组件不会因为父组件重新渲染而重新渲染,而没有使用memo包裹的组件只要父组件渲染了,子组件也会渲染。
6.函数式组件不能够直接获取ref,只能通过forwardRef 进行ref转发获取