xinchanghao / one-day-in-the-future

有朝一日,起飞...
2 stars 1 forks source link

React class 和 function Component #23

Open xinchanghao opened 4 years ago

xinchanghao commented 4 years ago

区别

class component编译es5后会多出一大坨辅助函数(继承React.Component),而function component只有一个createElement。

在性能上,我觉得,应该没什么太大的区别,因为本质上还是一个东西,同一套diff算法,然后patch方法应用新旧dom树的差异。

下面是参考别人的博客,粘贴过来的二者优劣之处,但我感觉说服力一般。。。建议铁汁们继续补充diss我!!!

为什么要用function component?

  1. react团队提倡使用
  2. function component更易于编写阅读和测试
  3. 代码量更少,上手容易
  4. 无状态组件可以更好的实现容器和表现的分离,可以只负责表现层的逻辑,不用考虑因为复杂的逻辑去改变状态从而带来的麻烦,有利于代码复用。

为什么要用class component?

  1. 当需要实现一些容器组件的时候,需要改变内部状态来实现自组件的改变的时候。
  2. 当需要用到生命周期钩子函数实现一些功能的时候

我最后总结一下

  1. 函数式组件可以引入类组件,类组件中可以引入函数式组件
  2. 纯函数不会被实例化,不能访问this,没有生命周期
  3. 尽可能的使用纯函数拆分复杂型组件

React class & function component 的区别 用Diff和Patch工具维护源码