在當今的 React 開發中,Hooks 已經成為構建函數組件的核心工具。自 React 16.8 版本引入以來,Hooks 徹底改變了開發者編寫 React 組件的方式,使得狀態管理和副作用處理變得更加簡潔和直觀。本文將全面介紹 React 提供的各種 Hooks,從基礎的 useState 和 useEffect,到高級的 useTransition 和 useDeferredValue,再到自定義 Hook 的實現原理,幫助開發者深入理解并掌握這一重要的 React 特性。
通過本文,你將學習到:
1. 常用內置 Hooks 的使用場景和最佳實踐;
2. 如何封裝可復用的自定義 Hooks;
3. Hooks 的核心原理和設計思想;
4. 性能優化相關的 Hooks 使用技巧;
無論你是 React 新手還是經驗豐富的開發者,相信本文都能幫助你更好地理解和運用 React Hooks,提升開發效率和代碼質量。
1. useState
用于在函數組件中添加狀態變量。
import React, { useState } from 'react';function Counter() {const [count, setCount] = useState(0);return (<div><p>You clicked {count} times</p><button onClick={() => setCount(count + 1)}>click me</button></div>);
}
2. useEffect
用于在函數組件中執行副作用操作,例如數據獲取、訂閱或手動更改 DOM。useEffect 會在組件渲染后執行。
import React, { useState, useEffect } from 'react';
function Example() {const [count, setCount] = useState(0);useEffect(() => {document.title = `You clicked ${count} times`;}, [count]);return (<div><p>You clicked {count} times</p><button onClick={() => setCount(count + 1)}>click me</button></div>);
}
3. useContext
用于在函數組件中訪問上下文。
import React, { useContext } from 'react';
const ThemeContext = React.createContext('light');
function ThemeButton() {const theme = useContext(ThemeContext);return <button style={{ background: theme }}>Theme Button</button>;
}function App() {return (<ThemeContext.Provider value="dark"><ThemeButton /></ThemeContext.Provider>);
}
4. useReducer
用于管理復雜的狀態邏輯,類似于 Redux 的 reducer 概念。