如何写一个自定义 Hook?有哪些最佳实践?
自定义 Hook 是以 use 开头的函数,内部可调用其他 Hook,用于抽取组件间可复用的状态逻辑(而非 UI)。
function useLocalStorage(key, initial) {
const [val, setVal] = useState(() => localStorage.getItem(key) ?? initial)
useEffect(() => localStorage.setItem(key, val), [key, val])
return [val, setVal]
}最佳实践:
- 命名必须以
use开头(让 React 的 Hooks 规则检查器能识别) - 只调用其他 Hook,不直接返回 JSX
- 返回数组(可解构命名)或对象(避免顺序耦合)
- 把「状态值 + 操作函数」一起返回,像
[value, setValue]
区别于普通函数:Hook 可以"挂"在组件生命周期上(用 useState/useEffect)。