React类组件(class)和函数组件(Function Component)的对比

856 阅读1分钟

React组件根据定义形式的不同,可以分为函数组件与 class类组件

共同点

  • 组件名称首字母大写
  • 组件必须返回唯一的jsx父元素,一般是以<></>闭合标签作为标识,当然用 <div> </div> 也一样
  • 无论是使用函数或是类来声明一个组件,它决不能修改外界传递过来的 props,本质就是单向数据流,父组件改变了属性,那么子组件视图会更新

不同点

  • 类组件使⽤的时候要实例化,⽽函数组件直接执⾏函数取返回结果即可。为了提⾼性能,现在的react前端项目开发一律用函数组件

  • this指向、生命周期、state状态,这些函数组件都没有,函数组件也被称为无状态的组件,只负责渲染的一些工作,函数组件是一个纯函数,执行完即销毁,无法存储 state。在16.8版本引入React Hooks 后才解决了问题,现在的函数组件也可以是有状态的组件,内部也可以维护自身的状态以及做一些逻辑方面的处理

  • 对于class组件大型组件很难拆分和重构,变得难以测试;相同业务逻辑分散到各个方法中,可能会变得混乱;复用逻辑可能变得复杂,如 HOC、Render Props;每调用useHook一次都会生成一份独立的状态,通过自定义hook能够更好的封装我们的功能;编写hooks为函数式编程,每个功能都包裹在函数中,整体风格更清爽,更优雅!

  • 写法上

image.png image.png