mcpField
R
react-use

react-use

github.com/hairyf开发26845 次安装2 周前更新
代码仓库

关于 react-use

介绍 react-use 这组用于常见应用模式的 React Hooks,参考内容涵盖浏览器传感器、UI 交互、动画、副作用、生命周期和状态管理。

主要功能

  1. 01浏览器与设备传感器 Hook
  2. 02UI 交互 Hook
  3. 03动画与计时 Hook
  4. 04副作用与生命周期 Hook
  5. 05状态管理工具

适用场景

  1. 01在组件中追踪浏览器或设备状态
  2. 02添加可复用的 UI 行为与动画
  3. 03管理异步副作用和共享状态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hairyf/skills --skill react-use

安装后在 Claude Code 中输入/react-use确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

GENERATION.md
references/
animations-harmonic-interval.md
animations-interval.md
animations-raf.md
animations-spring.md
animations-timeout-fn.md
animations-timeout.md
animations-tween.md
animations-update.md
core-usage.md
lifecycles-custom-compare-effect.md
lifecycles-deep-compare-effect.md
lifecycles-effect-once.md
lifecycles-event.md
lifecycles-isomorphic-layout-effect.md
lifecycles-lifecycles.md
lifecycles-logger.md
lifecycles-mount.md
lifecycles-mounted-state.md
lifecycles-promise.md
lifecycles-shallow-compare-effect.md
lifecycles-unmount-promise.md
lifecycles-unmount.md
lifecycles-update-effect.md
misc-ensured-forwarded-ref.md
sensors-battery.md
sensors-breakpoint.md
sensors-geolocation.md
sensors-hash.md
sensors-hover.md

详细介绍

react-use

该技能基于 react-use v17.6.0,生成于 2026-01-29。

react-use 是一系列必备 React Hooks 的集合,为 React 应用中的常见模式提供开箱即用的功能。它包含用于传感器、UI 交互、动画、副作用、生命周期管理和状态管理的 Hooks。

核心参考

主题描述参考
用法导入模式与 tree-shaking 建议core-usage

传感器

传感器 Hook 监听浏览器 API 和设备接口的变化,强制组件以更新后的状态重新渲染。

主题描述参考
useBattery跟踪设备电池状态sensors-battery
useGeolocation跟踪用户设备的地理位置状态sensors-geolocation
useHover跟踪元素的鼠标悬停状态sensors-hover
useHash跟踪位置哈希值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跟踪滚动鼠标滚轮的 deltaYsensors-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跟踪 Window 滚动位置sensors-window-scroll
useWindowSize跟踪 Window 尺寸sensors-window-size
useMeasure跟踪 HTML 元素的尺寸sensors-measure
useSize跟踪元素大小sensors-size
createBreakpoint通过断点跟踪 innerWidthsensors-breakpoint
useScrollbarWidth检测浏览器原生滚动条宽度sensors-scrollbar-width
usePinchZoom跟踪指针事件以检测双指缩放sensors-pinch-zoom

UI

UI hooks 允许你控制和订阅 UI 元素的状态变化。

主题描述参考
useAudio播放音频并暴露其控件ui-audio
useClickAway当用户在目标区域外点击时触发回调ui-click-away
useCss动态调整 CSSui-css
useDrop跟踪文件、链接和复制粘贴的拖放ui-drop
useFullscreen全屏显示元素或视频ui-fullscreen
useSlider为任意 HTML 元素提供滑动行为ui-slider
useSpeech从文本字符串合成语音ui-speech
useVibrate使用 Vibration API 提供物理反馈ui-vibrate
useVideo播放视频、跟踪其状态并暴露播放控件ui-video

Animations

Animation hooks 通常随时间对数值进行插值。

主题描述参考
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

副作用

副作用 Hook 允许你的应用使用浏览器 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设置页面的 faviconside-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

生命周期

生命周期 Hook 用于修改和扩展内置的 React Hook,或模拟 React Class 组件的生命周期模式。

TopicDescriptionReference
useEffectOnce修改后的 useEffect,仅运行一次lifecycles-effect-once
useEvent订阅事件lifecycles-event
useLifecycles调用挂载和卸载回调lifecycles-lifecycles
useMountedState跟踪组件是否已挂载lifecycles-mounted-state
useUnmountPromise跟踪组件是否已挂载,支持 Promiselifecycles-unmount-promise
usePromise仅在组件挂载期间解析 Promiselifecycles-promise
useLogger在组件经历生命周期时输出到控制台lifecycles-logger
useMount调用挂载回调lifecycles-mount
useUnmount调用卸载回调lifecycles-unmount
useUpdateEffect仅在更新时运行 effectlifecycles-update-effect
useIsomorphicLayoutEffect可在服务端运行的 useLayoutEffectlifecycles-isomorphic-layout-effect
useDeepCompareEffect带深度比较的 useEffectlifecycles-deep-compare-effect
useShallowCompareEffect带浅比较的 useEffectlifecycles-shallow-compare-effect
useCustomCompareEffect带自定义比较函数的 useEffectlifecycles-custom-compare-effect

状态

状态 Hook 让你可以轻松管理布尔值、数组和映射的状态。

主题描述参考
createMemo记忆化 Hook 的工厂state-create-memo
createReducer带自定义中间件的 reducer Hook 工厂state-create-reducer
createReducerContext用于在组件之间共享状态的 Hook 工厂state-create-reducer-context
createStateContext用于在组件之间共享状态的 Hook 工厂state-create-state-context
createGlobalState跨组件共享状态state-create-global-state
useDefault当状态为 null 或 undefined 时返回默认值state-default
useGetSet返回状态 getter get() 而非原始状态state-get-set
useGetSetStateuseGetSet 与 useSetState 的组合state-get-set-state
useLatest返回最新的状态或 propsstate-latest
usePrevious返回先前的状态或 propsstate-previous
usePreviousDistinct类似 usePrevious,但带有一个谓词state-previous-distinct
useObservable跟踪 Observable 的最新值state-observable
useRafState创建仅在 requestAnimationFrame 之后更新的 setState 方法state-raf-state
useSetState创建行为类似 this.setState 的 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
useMethodsuseReducer 的简洁替代方案state-methods

其他

主题描述参考
useEnsuredForwardedRef安全地使用 React.forwardedRefmisc-ensured-forwarded-ref

评论

支持 Markdown