1. 谈谈你对高阶组件的理解
参考:从逻辑抽象与复用、代码复用、组件增强的角度阐述,以 withRouter、connect 为例进行说明一些优点。
2. 高阶组件存在的不足?
从嵌套结构复杂和类的静态方法、ref转发丢失的角度说明其易错点。以课程的input表单为例具体简述。
3. hooks 为什么不能在条件语句中使用?
hooks 的底层基于链表实现,为了保证每个状态能一一对应,必须保证 hooks 函数无条件执行。所以不能在循环、条件语句、return后等位置调用。
4. hooks 有什么优点?
除了高阶函数的优点(略),还把高阶函数的不足给弥补了(如嵌套和 ref 转发、静态方法的丢失等)。且hooks使组件拥有了复用“生命周期”的能力,可以返回任意类型的数据,大大增加了逻辑的复用性、灵活性、可维护性。结合自己的经验作答,包括不同逻辑的线性交叉维护变为单一业务集中分块维护的特点(同Vue3的composition API),一个钩子也可以多次使用。
5. hooks 组容易踩到什么坑,你是怎么处理的?
hooks 闭包内外数据的同步问题。数组依赖容易忽略(与Vue3比起来确实算是个劣势),依赖的声明如果是引用类型的数据,要注意避免字面量,否则极易导致死循环。因而尽量使自定义hooks不依赖组件的状态,即纯函数的形式。
6. 自学umi hooks,掌握自定义 hooks
(https://hooks.umijs.org/zh-CN/hooks/async)

 

design库。react的

 

 

 

 

 

 

跨组件传递状态

context

hooks涉及到ref转发

 

 

memo的用法

 

eact缓存的实现

useCallback

umi hooks

dsl

path-to-regexp

数据流框架实现原理