React相关面试知识点
hooks使用规范
不能在循环、嵌套语句中使用、确保总是在你的 React 函数的最顶层以及任何 return 之前调用他们。 这样才能确保 Hook 在每一次渲染中都按照同样的顺序被调用,因为react实现查找的是链表、他用数组和下标来实现hooks的查找,如果在条件或者循环语句中调用hooks,就容易实现hooks对应状态的混乱。不能在render的时候去调用hooks
函数式组件和类组件的区别
在**react**16.8之后,推出的react hooks版本,最大的区别就是无状态组件,
函数式组件方便去监听react的变更值,方便根据值做出对应的操作
useMemo 、useCallback 区别
React Fiber原理
fiber是react16之后引入的一种调度算法,为了性能优化,16版本之前在创建虚拟dom渲染到页面是递归遍历渲染的,不能被打断,16之后引入了Fiber,思想是将任务分成很多小任务,在每个小任务执行的时候会看有没有空闲时间,如果有去执行下一个任务。其中真正实现是改变16之前vdom直接渲染,先将vdom转换为fiber,每个fiber有记录的child、siblings、return;形成了一种链表形式,所以可以被打断,在转换fiber的过程中还会做两件事情一个是提前创建对应的 dom 节点,一个是做 diff,确定是增、删还是改。最后全部转换完成以后,一次性commit渲染到页面;