目前对类组件和函数组件的认识:

1. 在 react 的每一次更新时 会从root 递归调用 classComponent 实例的 render 方法、调用 functionComponent,都是为了获得虚拟dom节点;

2. 进入hooks版本,有状态的函数组件,可以更粒度抽离逻辑(Umi Hooks),但带来了问题:类组件回调函数在类的原型上,天生缓存,但是函数组件回调在函数体内部声明,每次页面更新都会重新生成,所以需要useCallback去缓存回调以节制性能,并且尽量把用到的引用类型数据声明在函数外;

3. 用类组件,内存中会一直有个实例,供你调render方法、缓存状态;用函数组件,它本身就相当于类组件的render,是一个全局的函数;

4. 如果类组件不复用,那么声明了一个类,就只有一个实例(人类只有一个人),是不是很奇怪;

5. 函数组件用到的常量,引用类型(如columns)放到函数体外,保证每次render复用,节省性能开销;简单类型的常量,放在函数体外是全局变量,占用栈内存,由v8垃圾清理机制清理;放在函数体内是局部变量,也是占用栈内存,但是函数组件执行完就被销毁(会不会有闭包),比全局变量的生命周期短,不会一直占用内存,但是每次都要重新声明;
展开
爱剪辑的人于2020-07-13 03:20发布的图片
评论