react-use
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesereact-use
react-use
The skill is based on react-use v17.6.0, generated at 2026-01-29.
react-use is a collection of essential React Hooks that provide ready-to-use functionality for common patterns in React applications. It includes hooks for sensors, UI interactions, animations, side-effects, lifecycle management, and state management.
本技能基于react-use v17.6.0版本,生成于2026年1月29日。
react-use是一个包含各类必备React Hooks的集合,可为React应用中的常见模式提供即用型功能。它涵盖了传感器、UI交互、动画、副作用、生命周期管理和状态管理相关的钩子。
Core References
核心参考
| Topic | Description | Reference |
|---|---|---|
| Usage | Import patterns and tree-shaking recommendations | core-usage |
| 主题 | 描述 | 参考链接 |
|---|---|---|
| 使用方法 | 导入模式及Tree-shaking建议 | core-usage |
Sensors
传感器类钩子
Sensor hooks listen to changes in browser APIs and device interfaces, forcing components to re-render with updated state.
| Topic | Description | Reference |
|---|---|---|
| useBattery | Tracks device battery status | sensors-battery |
| useGeolocation | Tracks geo location state of user's device | sensors-geolocation |
| useHover | Tracks mouse hover state of an element | sensors-hover |
| useHash | Tracks location hash value | sensors-hash |
| useIdle | Tracks whether user is being inactive | sensors-idle |
| useIntersection | Tracks an HTML element's intersection | sensors-intersection |
| useKey | Tracks key presses | sensors-key |
| useKeyPress | Tracks key press state | sensors-key-press |
| useKeyPressEvent | Handles key press events | sensors-key-press-event |
| useKeyboardJs | Tracks keyboard key combinations | sensors-keyboard-js |
| useLocation | Tracks page navigation bar location state | sensors-location |
| useSearchParam | Tracks URL search parameters | sensors-search-param |
| useLongPress | Tracks long press gesture | sensors-long-press |
| useMedia | Tracks state of a CSS media query | sensors-media |
| useMediaDevices | Tracks state of connected hardware devices | sensors-media-devices |
| useMotion | Tracks state of device's motion sensor | sensors-motion |
| useMouse | Tracks state of mouse position | sensors-mouse |
| useMouseWheel | Tracks deltaY of scrolled mouse wheel | sensors-mouse-wheel |
| useNetworkState | Tracks browser's network connection state | sensors-network-state |
| useOrientation | Tracks device's screen orientation | sensors-orientation |
| usePageLeave | Triggers when mouse leaves page boundaries | sensors-page-leave |
| useScratch | Tracks mouse click-and-scrub state | sensors-scratch |
| useScroll | Tracks an HTML element's scroll position | sensors-scroll |
| useScrolling | Tracks whether HTML element is scrolling | sensors-scrolling |
| useStartTyping | Detects when user starts typing | sensors-start-typing |
| useWindowScroll | Tracks Window scroll position | sensors-window-scroll |
| useWindowSize | Tracks Window dimensions | sensors-window-size |
| useMeasure | Tracks an HTML element's dimensions | sensors-measure |
| useSize | Tracks element size | sensors-size |
| createBreakpoint | Tracks innerWidth with breakpoints | sensors-breakpoint |
| useScrollbarWidth | Detects browser's native scrollbars width | sensors-scrollbar-width |
| usePinchZoom | Tracks pointer events to detect pinch zoom | sensors-pinch-zoom |
传感器类钩子监听浏览器API和设备接口的变化,促使组件使用更新后的状态重新渲染。
| 主题 | 描述 | 参考链接 |
|---|---|---|
| useBattery | 跟踪设备电池状态 | sensors-battery |
| useGeolocation | 跟踪用户设备的地理位置状态 | sensors-geolocation |
| useHover | 跟踪元素的鼠标悬停状态 | sensors-hover |
| useHash | 跟踪地址栏hash值 | sensors-hash |
| useIdle | 跟踪用户是否处于非活跃状态 | sensors-idle |
| useIntersection | 跟踪HTML元素的交叉状态 | sensors-intersection |
| useKey | 跟踪按键操作 | sensors-key |
| useKeyPress | 跟踪按键按下的状态 | sensors-key-press |
| useKeyPressEvent | 处理按键按下事件 | sensors-key-press-event |
| useKeyboardJs | 跟踪键盘组合键 | sensors-keyboard-js |
| useLocation | 跟踪导航栏的位置状态 | sensors-location |
| useSearchParam | 跟踪URL搜索参数 | sensors-search-param |
| useLongPress | 跟踪长按手势 | sensors-long-press |
| useMedia | 跟踪CSS媒体查询的状态 | sensors-media |
| useMediaDevices | 跟踪已连接硬件设备的状态 | sensors-media-devices |
| useMotion | 跟踪设备运动传感器的状态 | sensors-motion |
| useMouse | 跟踪鼠标位置状态 | sensors-mouse |
| useMouseWheel | 跟踪鼠标滚轮滚动的deltaY值 | sensors-mouse-wheel |
| useNetworkState | 跟踪浏览器的网络连接状态 | sensors-network-state |
| useOrientation | 跟踪设备的屏幕方向 | sensors-orientation |
| usePageLeave | 当鼠标离开页面边界时触发 | sensors-page-leave |
| useScratch | 跟踪鼠标点击并拖动的状态 | sensors-scratch |
| useScroll | 跟踪HTML元素的滚动位置 | sensors-scroll |
| useScrolling | 跟踪HTML元素是否正在滚动 | sensors-scrolling |
| useStartTyping | 检测用户开始输入的操作 | sensors-start-typing |
| useWindowScroll | 跟踪浏览器窗口的滚动位置 | sensors-window-scroll |
| useWindowSize | 跟踪浏览器窗口的尺寸 | sensors-window-size |
| useMeasure | 跟踪HTML元素的尺寸 | sensors-measure |
| useSize | 跟踪元素尺寸 | sensors-size |
| createBreakpoint | 结合断点跟踪窗口宽度 | sensors-breakpoint |
| useScrollbarWidth | 检测浏览器原生滚动条的宽度 | sensors-scrollbar-width |
| usePinchZoom | 跟踪指针事件以检测捏合缩放操作 | sensors-pinch-zoom |
UI
UI类钩子
UI hooks allow you to control and subscribe to state changes of UI elements.
| Topic | Description | Reference |
|---|---|---|
| useAudio | Plays audio and exposes its controls | ui-audio |
| useClickAway | Triggers callback when user clicks outside target area | ui-click-away |
| useCss | Dynamically adjusts CSS | ui-css |
| useDrop | Tracks file, link and copy-paste drops | ui-drop |
| useFullscreen | Display an element or video full-screen | ui-fullscreen |
| useSlider | Provides slide behavior over any HTML element | ui-slider |
| useSpeech | Synthesizes speech from a text string | ui-speech |
| useVibrate | Provides physical feedback using Vibration API | ui-vibrate |
| useVideo | Plays video, tracks its state, and exposes playback controls | ui-video |
UI类钩子允许你控制并订阅UI元素的状态变化。
| 主题 | 描述 | 参考链接 |
|---|---|---|
| useAudio | 播放音频并暴露控制方法 | ui-audio |
| useClickAway | 当用户点击目标区域外时触发回调 | ui-click-away |
| useCss | 动态调整CSS样式 | ui-css |
| useDrop | 跟踪文件、链接和粘贴内容的拖放操作 | ui-drop |
| useFullscreen | 将元素或视频全屏显示 | ui-fullscreen |
| useSlider | 为任意HTML元素提供滑动行为 | ui-slider |
| useSpeech | 将文本字符串合成为语音 | ui-speech |
| useVibrate | 使用振动API提供物理反馈 | ui-vibrate |
| useVideo | 播放视频、跟踪其状态并暴露播放控制方法 | ui-video |
Animations
动画类钩子
Animation hooks usually interpolate numeric values over time.
| Topic | Description | Reference |
|---|---|---|
| useRaf | Re-renders component on each requestAnimationFrame | animations-raf |
| useInterval | Re-renders component on a set interval | animations-interval |
| useHarmonicIntervalFn | Harmonic interval function | animations-harmonic-interval |
| useSpring | Interpolates number over time according to spring dynamics | animations-spring |
| useTimeout | Re-renders component after a timeout | animations-timeout |
| useTimeoutFn | Calls given function after a timeout | animations-timeout-fn |
| useTween | Re-renders component while tweening a number from 0 to 1 | animations-tween |
| useUpdate | Returns a callback which re-renders component when called | animations-update |
动画类钩子通常会随时间插值计算数值。
| 主题 | 描述 | 参考链接 |
|---|---|---|
| useRaf | 在每个requestAnimationFrame触发时重新渲染组件 | animations-raf |
| useInterval | 按设定的时间间隔重新渲染组件 | animations-interval |
| useHarmonicIntervalFn | 调和间隔函数 | animations-harmonic-interval |
| useSpring | 根据弹簧动力学随时间插值计算数值 | animations-spring |
| useTimeout | 超时后重新渲染组件 | animations-timeout |
| useTimeoutFn | 超时后调用指定函数 | animations-timeout-fn |
| useTween | 在数值从0到1的补间动画过程中重新渲染组件 | animations-tween |
| useUpdate | 返回一个回调函数,调用时会重新渲染组件 | animations-update |
Side-effects
副作用类钩子
Side-effect hooks allow your app to trigger various side-effects using browser's API.
| Topic | Description | Reference |
|---|---|---|
| useAsync | Resolves an async function | side-effects-async |
| useAsyncFn | Async function with manual execution | side-effects-async-fn |
| useAsyncRetry | Async function with retry capability | side-effects-async-retry |
| useBeforeUnload | Shows browser alert when user tries to reload or close the page | side-effects-before-unload |
| useCookie | Provides way to read, update and delete a cookie | side-effects-cookie |
| useCopyToClipboard | Copies text to clipboard | side-effects-copy-to-clipboard |
| useDebounce | Debounces a function | side-effects-debounce |
| useError | Error dispatcher | side-effects-error |
| useFavicon | Sets favicon of the page | side-effects-favicon |
| useLocalStorage | Manages a value in localStorage | side-effects-local-storage |
| useSessionStorage | Manages a value in sessionStorage | side-effects-session-storage |
| useLockBodyScroll | Locks scrolling of the body element | side-effects-lock-body-scroll |
| useRafLoop | Calls given function inside the RAF loop | side-effects-raf-loop |
| useThrottle | Throttles a function | side-effects-throttle |
| useThrottleFn | Throttle function variant | side-effects-throttle-fn |
| useTitle | Sets title of the page | side-effects-title |
| usePermission | Query permission status for browser APIs | side-effects-permission |
副作用类钩子允许你的应用通过浏览器API触发各类副作用操作。
| 主题 | 描述 | 参考链接 |
|---|---|---|
| useAsync | 解析异步函数 | side-effects-async |
| useAsyncFn | 支持手动执行的异步函数 | side-effects-async-fn |
| useAsyncRetry | 支持重试功能的异步函数 | side-effects-async-retry |
| useBeforeUnload | 当用户尝试刷新或关闭页面时显示浏览器提示 | side-effects-before-unload |
| useCookie | 提供读取、更新和删除Cookie的方法 | side-effects-cookie |
| useCopyToClipboard | 将文本复制到剪贴板 | side-effects-copy-to-clipboard |
| useDebounce | 为函数添加防抖功能 | side-effects-debounce |
| useError | 错误分发器 | side-effects-error |
| useFavicon | 设置页面的图标 | side-effects-favicon |
| useLocalStorage | 管理localStorage中的值 | side-effects-local-storage |
| useSessionStorage | 管理sessionStorage中的值 | side-effects-session-storage |
| useLockBodyScroll | 锁定body元素的滚动 | side-effects-lock-body-scroll |
| useRafLoop | 在RAF循环中调用指定函数 | side-effects-raf-loop |
| useThrottle | 为函数添加节流功能 | side-effects-throttle |
| useThrottleFn | 节流函数的变体 | side-effects-throttle-fn |
| useTitle | 设置页面标题 | side-effects-title |
| usePermission | 查询浏览器API的权限状态 | side-effects-permission |
Lifecycles
生命周期类钩子
Lifecycle hooks modify and extend built-in React hooks or imitate React Class component lifecycle patterns.
| Topic | Description | Reference |
|---|---|---|
| useEffectOnce | Modified useEffect that only runs once | lifecycles-effect-once |
| useEvent | Subscribe to events | lifecycles-event |
| useLifecycles | Calls mount and unmount callbacks | lifecycles-lifecycles |
| useMountedState | Tracks if component is mounted | lifecycles-mounted-state |
| useUnmountPromise | Track if component is mounted with promise support | lifecycles-unmount-promise |
| usePromise | Resolves promise only while component is mounted | lifecycles-promise |
| useLogger | Logs in console as component goes through life-cycles | lifecycles-logger |
| useMount | Calls mount callbacks | lifecycles-mount |
| useUnmount | Calls unmount callbacks | lifecycles-unmount |
| useUpdateEffect | Run an effect only on updates | lifecycles-update-effect |
| useIsomorphicLayoutEffect | useLayoutEffect that works on server | lifecycles-isomorphic-layout-effect |
| useDeepCompareEffect | useEffect with deep comparison | lifecycles-deep-compare-effect |
| useShallowCompareEffect | useEffect with shallow comparison | lifecycles-shallow-compare-effect |
| useCustomCompareEffect | useEffect with custom comparison function | lifecycles-custom-compare-effect |
生命周期类钩子修改并扩展内置React钩子,或模拟React类组件的生命周期模式。
| 主题 | 描述 | 参考链接 |
|---|---|---|
| useEffectOnce | 仅运行一次的修改版useEffect | lifecycles-effect-once |
| useEvent | 订阅事件 | lifecycles-event |
| useLifecycles | 调用挂载和卸载回调函数 | lifecycles-lifecycles |
| useMountedState | 跟踪组件是否已挂载 | lifecycles-mounted-state |
| useUnmountPromise | 结合Promise支持跟踪组件是否已挂载 | lifecycles-unmount-promise |
| usePromise | 仅在组件已挂载时解析Promise | lifecycles-promise |
| useLogger | 在组件生命周期各阶段输出控制台日志 | lifecycles-logger |
| useMount | 调用挂载回调函数 | lifecycles-mount |
| useUnmount | 调用卸载回调函数 | lifecycles-unmount |
| useUpdateEffect | 仅在组件更新时执行副作用 | lifecycles-update-effect |
| useIsomorphicLayoutEffect | 可在服务端运行的useLayoutEffect | lifecycles-isomorphic-layout-effect |
| useDeepCompareEffect | 支持深度比较的useEffect | lifecycles-deep-compare-effect |
| useShallowCompareEffect | 支持浅比较的useEffect | lifecycles-shallow-compare-effect |
| useCustomCompareEffect | 支持自定义比较函数的useEffect | lifecycles-custom-compare-effect |
State
状态管理类钩子
State hooks allow you to easily manage state of booleans, arrays, and maps.
| Topic | Description | Reference |
|---|---|---|
| createMemo | Factory of memoized hooks | state-create-memo |
| createReducer | Factory of reducer hooks with custom middleware | state-create-reducer |
| createReducerContext | Factory of hooks for sharing state between components | state-create-reducer-context |
| createStateContext | Factory of hooks for sharing state between components | state-create-state-context |
| createGlobalState | Cross component shared state | state-create-global-state |
| useDefault | Returns the default value when state is null or undefined | state-default |
| useGetSet | Returns state getter get() instead of raw state | state-get-set |
| useGetSetState | Combination of useGetSet and useSetState | state-get-set-state |
| useLatest | Returns the latest state or props | state-latest |
| usePrevious | Returns the previous state or props | state-previous |
| usePreviousDistinct | Like usePrevious but with a predicate | state-previous-distinct |
| useObservable | Tracks latest value of an Observable | state-observable |
| useRafState | Creates setState method which only updates after requestAnimationFrame | state-raf-state |
| useSetState | Creates setState method which works like this.setState | state-set-state |
| useToggle | Tracks state of a boolean | state-toggle |
| useCounter | Tracks state of a number | state-counter |
| useList | Tracks state of an array | state-list |
| useMap | Tracks state of an object | state-map |
| useSet | Tracks state of a Set | state-set |
| useQueue | Implements simple queue | state-queue |
| useStateList | Circularly iterates over an array | state-state-list |
| useStateValidator | Validates state with a validator function | state-state-validator |
| useStateWithHistory | Stores previous state values and provides handles to travel through them | state-state-with-history |
| useMultiStateValidator | Alike useStateValidator but tracks multiple states | state-multi-state-validator |
| useMediatedState | Like regular useState but with mediation by custom function | state-mediated-state |
| useFirstMountState | Check if current render is first | state-first-mount-state |
| useRendersCount | Count component renders | state-renders-count |
| useMethods | Neat alternative to useReducer | state-methods |
状态管理类钩子允许你轻松管理布尔值、数组和映射的状态。
| 主题 | 描述 | 参考链接 |
|---|---|---|
| createMemo | 记忆化钩子的工厂函数 | state-create-memo |
| createReducer | 带自定义中间件的reducer钩子工厂 | state-create-reducer |
| createReducerContext | 用于组件间共享状态的钩子工厂 | state-create-reducer-context |
| createStateContext | 用于组件间共享状态的钩子工厂 | state-create-state-context |
| createGlobalState | 跨组件共享的全局状态 | state-create-global-state |
| useDefault | 当状态为null或undefined时返回默认值 | state-default |
| useGetSet | 返回状态获取器get()而非原始状态 | state-get-set |
| useGetSetState | useGetSet与useSetState的组合 | state-get-set-state |
| useLatest | 返回最新的状态或属性 | state-latest |
| usePrevious | 返回之前的状态或属性 | state-previous |
| usePreviousDistinct | 类似usePrevious但支持谓词判断 | state-previous-distinct |
| useObservable | 跟踪Observable的最新值 | state-observable |
| useRafState | 创建仅在requestAnimationFrame后更新的setState方法 | state-raf-state |
| useSetState | 创建类似this.setState的状态更新方法 | state-set-state |
| useToggle | 跟踪布尔值状态 | state-toggle |
| useCounter | 跟踪数值状态 | state-counter |
| useList | 跟踪数组状态 | state-list |
| useMap | 跟踪对象状态 | state-map |
| useSet | 跟踪Set状态 | state-set |
| useQueue | 实现简单的队列 | state-queue |
| useStateList | 循环遍历数组 | state-state-list |
| useStateValidator | 使用验证函数验证状态 | state-state-validator |
| useStateWithHistory | 存储之前的状态值并提供回溯操作 | state-state-with-history |
| useMultiStateValidator | 类似useStateValidator但可跟踪多个状态 | state-multi-state-validator |
| useMediatedState | 类似普通useState但支持自定义函数中介 | state-mediated-state |
| useFirstMountState | 检查当前是否为首次渲染 | state-first-mount-state |
| useRendersCount | 统计组件渲染次数 | state-renders-count |
| useMethods | useReducer的简洁替代方案 | state-methods |
Miscellaneous
其他类钩子
| Topic | Description | Reference |
|---|---|---|
| useEnsuredForwardedRef | Use a React.forwardedRef safely | misc-ensured-forwarded-ref |
| 主题 | 描述 | 参考链接 |
|---|---|---|
| useEnsuredForwardedRef | 安全使用React.forwardedRef | misc-ensured-forwarded-ref |