React Hooks 有哪些常用的?各自的作用是什么?

常用 Hooks

1. useState — 状态管理

const [count, setCount] = useState(0)
// 函数式更新(推荐)
setCount(prev => prev + 1)

2. useEffect — 副作用

// 挂载时执行
useEffect(() => { fetchData() }, [])

// 依赖变化时执行
useEffect(() => { subscribe(id) }, [id])

// 清理副作用
useEffect(() => {
  const timer = setInterval(tick, 1000)
  return () => clearInterval(timer) // 卸载时执行
}, [])

3. useRef — 引用(不触发重渲染)

const inputRef = useRef(null)
inputRef.current.focus()

4. useMemo — 缓存计算结果

const sorted = useMemo(() => expensiveSort(data), [data])

5. useCallback — 缓存函数引用

const handleClick = useCallback(() => doSomething(id), [id])

6. useContext — 跨组件共享状态

const theme = useContext(ThemeContext)

7. useReducer — 复杂状态管理

const [state, dispatch] = useReducer(reducer, initialState)

其他 Hooks

Hook 作用
useLayoutEffect 同步执行副作用(DOM 更新后,浏览器绘制前)
useImperativeHandle 自定义 ref 暴露给父组件的实例值
useId 生成唯一 ID
useDeferredValue 延迟更新(React 18)
useTransition 标记非紧急更新(React 18)

Hooks 规则

  1. 只在顶层调用,不能在循环/条件/嵌套函数中调用
  2. 只在 React 函数组件或自定义 Hook 中调用

为什么有这些规则

Hooks 依赖调用顺序的索引来对应内部状态。如果在条件语句中调用,顺序可能变化,导致状态错乱。

同分类其他题目