[TOC]
## 基础
[**什么是高阶组件?**]()
`接受一个组件并返回一个新组件的函数`
作用
* 渲染劫持
* 代码重用
* props 的处理
* start 的的抽象和操作
[**什么是受控组件和非受控组件?**]()
* 受控组件
`能够控制状态的组件就叫受控组件 就是每次改变状态 都有相关的处理函数`
* 非受控组件
`内部储存状态的组件当需要时可以用ref查询DOM上的值`
[** React 组件通信方式?**]()
## Hooks
[**常用的hooks及作用**]()
* [ ] useStart
* 作用
`初始化状态`
* [ ] useEffect
* 作用
`副作用 接受两个参数第一个参数是函数 第二个是数组依赖项`
* [ ] useLayoutEffect
* 作用
`Dom操作的副作用,在DOM更新后执行`
* [ ] userMemo
* 作用
`返回缓存值可以是任何。对象 函数都可以,只有依赖项改变时才会执行`
* 应用场景
~~~jsx
1. 复杂计算逻辑优化
2. 父子组件重新渲染问题优化
~~~
* [ ] useCallback
* 作用
`返回一个缓存函数,只有依赖项改变时才会执行`
* 应用场景
~~~jsx
1. 父子组件重新渲染问题优化
~~~
[**useEffect和useLayoutEffect有什么区别**]()
* 相同点
1. 第一个参数,接收一个函数作为参数
2. 第二个参数,接收【依赖列表】,只有依赖更新时,才会执行函数
3. 返回一个函数,先执行返回函数,再执行参数函数(所以说执行过程的流程是一样的)
* 不同点
1. 执行时机不同。
`useLayoutEffect在DOM更新之后执行;useEffect在render渲染结束后执行。执行示例代码会发现useLayoutEffect永远比useEffect先执行,这是因为DOM更新之后,渲染才结束或者渲染还会结束`
[**userMemo和useCallback有什么区别**]()
* 相同点
1. 使用方法相同,第一个参数是函数,第一个是依赖项
* 不同点
1. useMemo会直接调用传过来的函数并且返回一个值,useCallback 则不会
[**说一下 react-fiber**]()