共同点:
- 类组件和函数组件在呈现方式上都是一样的,都是返回要在页面中显然的React元素。
- 两者可以相互改写,可以把类组件改写成函数组件,也可以把函数组件改写成类组件。
不同点:
- 类组件是OOP(面向对象编程),有继承,有属性。
- 函数组件是FP(函数式编程)及 view = fn(props),输入与输出有某种特定的映射关系。
- 类组件通过生命周期来包装业务逻辑,可以实现继承。
- 函数组件主打的是确定性,没有副作用,采用组合的方式来包装业务。
- 类组件由于继承灵活性不高,同时屏蔽细节过多(this的模糊性,业务逻辑散落在各个生命周期中),所以官方更推荐“组合优于继承”的设计理念。
- 由于React Hooks的推出,函数组件不需要在函数组件可以完全取代类组件。