"小和山的菜鳥們",爲前端開發者提供技術相關資訊以及系列基礎文章。爲更好的用戶體驗,請您移至咱們官網小和山的菜鳥們 ( xhs-rookies.com/ ) 進行學習,及時獲取最新文章。javascript
"Code tailor" ,若是您對咱們文章感興趣、或是想提一些建議,微信關注 「小和山的菜鳥們」 公衆號,與咱們取的聯繫,您也能夠在微信上觀看咱們的文章。每個建議或是贊同都是對咱們極大的鼓勵!前端
到此爲止,咱們的 hooks
系列只剩下最後一個大案例了。如今咱們來對以前的內容作一個回顧。java
hooks
是 React 16.8
新增的特性,它能夠在不編寫 類組件 的狀況下使用 state
以及其餘的 React
特性web
this
指向問題不容易理解useState()
用於爲函數組件引入狀態。純函數不能有狀態,因此使用鉤子來引入狀態。數組
const [count, setCount] = useState(defaultValue) // 假設 defaultValue 爲 0
複製代碼
useState
返回的是一個數組,通常直接使用解構賦值取出兩個值,state
以及 修改 state 的函數
。這兩個值是須要成對獲取的。微信
使用多個 useState
就能夠定義多個 state
變量。markdown
Effect Hook
可讓你在函數組件中執行反作用操做,換句話說能夠完成一些相似 Class 中生命週期的功能。app
useEffect(() => {
// 執行一些反作用操做
},[]);
複製代碼
useEffect
至關於 class
中三個生命週期的組合。在 class
中不一樣,每個生命週期,都會有一些不相關的邏輯代碼,useEffect
將這些代碼進行了更好的拆分。函數
useRef
返回一個可變的 ref
對象,其 .current
屬性被初始化爲傳入的參數(initialValue
)。返回的 ref
對象在組件的整個生命週期內保持不變。oop
const refContainer = useRef(initialValue)
複製代碼
它返回的 ref
對象在組件的整個生命週期保持不變,讓咱們在函數組件中,也能夠像 Class
組件同樣保存一些實例屬性,爲咱們開發帶來了許多可能性,除了這些新奇的功能,不要忘記 ref
開始獲取 DOM
屬性的功能,由於在 useRef
一樣能夠適用。
useCallback
給咱們帶來了記憶函數,結合子組件和 useMemo
能夠達到優化組件加載的效果。React.memo
這種避免子組件作不必的渲染時候,就須要用 useCallback
進行配合,不然 React.memo
將無心義。Hook
React
函數中調用 Hook
自定義 Hook 是一個函數,其名稱以 "use
" 開頭,函數內部能夠調用其餘的 Hook
在文章中,咱們使用兩個簡單的案例,講述了 自定義 hook 的建立和使用。
const useMyHook = (initValue) => {
const [value, setValue] = useState(initValue || '')
return value
}
複製代碼
這就是咱們的簡單建立,而使用方式與 useState
相似,只須要建立時取出值就能夠進行使用。
function App() {
const myHookValue = useMyHook('myHook')
return <div className="app">{myHookValue}</div>
}
複製代碼
咱們在後續,還會有一個案例,對 hooks
系列文章中的所學內容進行嘗試。使用了一個留言功能的案例。