React Hooks 提供了一系列常用的 API,这些 API 可以让你在函数组件中使用状态(state)、生命周期方法、上下文(context)等 React 特性。以下是一些常用的 React Hooks API:
- useState: 用于在函数组件中添加状态。它返回一个包含状态值和更新状态值的函数。
const [state, setState] = useState(initialState);
- useEffect: 用于在组件渲染后执行副作用操作,如数据获取、订阅、手动 DOM 操作等。它在每次渲染后都会执行。
useEffect(() => {
// effect code
return () => {
// cleanup code
};
}, [dependencies]);
- useContext: 用于在函数组件中访问 React 上下文。
const value = useContext(MyContext);
- useReducer: 用于在函数组件中管理复杂的状态逻辑。它类似于 Redux 中的 reducer。
const [state, dispatch] = useReducer(reducer, initialState);
- useCallback: 用于缓存回调函数,以便在依赖项不变时不重新创建该函数。
const memoizedCallback = useCallback(() => {
// callback code
}, [dependencies]);
- useMemo: 用于缓存计算结果,以便在依赖项不变时不重新计算。
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
- useRef: 用于在函数组件之间保存可变值的引用,类似于 class 组件中的实例变量。
const refContainer = useRef(initialValue);
- useImperativeHandle: 用于自定义暴露给父组件的实例值
useImperativeHandle(
ref,
() => ({
// exposed instance methods/properties
}),
[dependencies]
);
- useLayoutEffect: 类似于 useEffect,但会在所有 DOM 变更后同步调用 effect。它会在浏览器完成布局与绘制之后,但在任何新的渲染之前执行。
useLayoutEffect(() => {
// effect code
}, [dependencies]);