基于 ES6 Class 这种写法,通过继承 React.Component 得来的 React 组件。
以函数形式存在的 React 组件。
早期并没有 Hooks 加持,内部无法定义和维护 state,又称为 无状态组件。
以上是否意味着 类组件一定比函数组件 更好呢?
类组件是面向对象编程思想的一种表征。
类组件中预置了相当多的东西,需要去制定,state 和 生命周期 就是其中的典型。
当实现一个简易的组件时,类组件相对于真正的 组件代码,显得非常笨重。
由于封装的存在,组件与组件之间可能有些强关联,内部逻辑难以拆分和复用。
使用 高阶组件、Render Props 等能解决上面问题,但是需要一定的学习成本。
函数组件在写法上是轻量、灵活、易于组织和维护的。
函数组件会捕获 render 内部的状态。
函数组件更加契合 React 框架的设计理念。
UI = render(data) || UI = f(data)
React 组件本身定位就是函数,一个接受数据、生成 UI 的函数。
前面说到,函数组件比类组件缺少了很多东西,如 state、生命周期等。
Hooks 出现就是为了帮助函数组件补齐这些缺失的能力。
允许函数组件自由的选择使用,制定出最合适的函数组件。