[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**]()