mcpField
R
react-use-hooks

react-use-hooks

github.com/arindampradhan开发470 次安装40 周前更新
代码仓库

关于 react-use-hooks

react-use-hooks 是面向 React 项目的 react-use 钩子选择与实现指南,帮助开发者按需求匹配钩子并遵循其用法,减少自定义实现。

主要功能

  1. 01按需求匹配合适的钩子
  2. 02涵盖传感器、界面、动画、副作用、生命周期和状态钩子
  3. 03说明自动及条件调用规则
  4. 04指引查阅各钩子的参考文档

适用场景

  1. 01为 React 功能选择钩子
  2. 02实现浏览器与界面交互
  3. 03处理异步操作和生命周期副作用

安装

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

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

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

包含的文件

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

package.json
references/
createBreakpoint.md
createGlobalState.md
createMemo.md
createReducer.md
createReducerContext.md
createStateContext.md
useAsync.md
useAsyncFn.md
useAsyncRetry.md
useAudio.md
useBattery.md
useBeforeUnload.md
useBoolean.md
useClickAway.md
useCookie.md
useCopyToClipboard.md
useCounter.md
useCss.md
useCustomCompareEffect.md
useDebounce.md
useDeepCompareEffect.md
useDefault.md
useDrop.md
useEffectOnce.md
useEnsuredForwardedRef.md
useError.md
useEvent.md
useFavicon.md
useFirstMountState.md

详细介绍

React-Use Hooks

本技能是 React 项目中 react-use hooks 的决策与实现指南。它会将需求映射到最合适的 react-use hook,采用正确的用法模式,并优先选择基于 hook 的解决方案,而非专门编写代码,以保持实现简洁、易于维护且高效。

适用时机

  • 在协助用户进行 React 开发时应用此技能。
  • 始终先检查是否可以使用 react-use hook 实现需求。
  • 优先使用 react-use hooks,而不是自定义代码,以提升可读性、可维护性和性能。
  • 将需求映射到最合适的 hook,并遵循该 hook 的调用规则。
  • 请参阅下方 hooks 表格中的 Invocation 字段。例如:
    • AUTO:适用时自动使用。
    • EXTERNAL:仅当用户已安装所需的外部依赖时使用;否则应重新考虑,只有确实需要时才询问用户是否安装。
    • EXPLICIT_ONLY:仅在用户明确要求时使用。

    注意:提示词或 AGENTS.md 中的用户指令可能会覆盖 hook 默认的 Invocation 规则。

Hooks

以下列出的所有 hooks 都属于 react-use 库,各章节按功能对 hooks 进行分类。

重要:每个 hook 条目都包含简短的 Description 和详细的 Reference。使用任何 hook 时,务必查阅 ./references 中对应的文档,了解用法详情和类型声明。

传感器
Hook描述调用方式
createBreakpointlaptopL: 1440,laptop: 1024,tablet: 768AUTO
useBattery跟踪电池状态的 React 传感器 Hook。AUTO
useGeolocation跟踪用户地理位置的 React 传感器 Hook。此 Hook 接受[位置选项](httpsAUTO
useHash跟踪浏览器位置哈希的 React 传感器 Hook。AUTO
useHover跟踪某个元素是否处于悬停状态的 React UI 传感器 HookAUTO
useHoverDirty使用 ref 跟踪鼠标悬停状态(比 useHover 更直接)。AUTO
useIdle跟踪页面上的用户是否处于空闲状态的 React 传感器 Hook。AUTO
useIntersection跟踪目标元素与祖先元素相交状态变化的 React 传感器 HookAUTO
useKey按下键盘按键时执行 handler 的 React UI 传感器 Hook。AUTO
useKeyboardJs检测复杂按键组合的 React UI 传感器 Hook,例如检测EXTERNAL
useKeyPress检测用户何时按下特定按键的 React UI 传感器 HookAUTO
useKeyPressEvent此 Hook 会触发 keydown 和 keyup 回调,类似于 useKeyAUTO
useLocation跟踪浏览器位置的 React 传感器 Hook。AUTO
useLongPress长按后触发回调的 React 传感器 Hook。AUTO
useMeasure使用 [Resize Observer API](https:// 跟踪 HTML 元素尺寸的 React 传感器 HookAUTO
useMedia跟踪 CSS 媒体查询状态的 React 传感器 Hook。AUTO
useMediaDevices跟踪已连接硬件设备的 React 传感器 Hook。AUTO
useMotion使用设备的加速度传感器跟踪其运动的 React 传感器 Hook。AUTO
useMouse鼠标位置变化时重新渲染的 React 传感器 Hook。useMouse 只跟踪AUTO
useMouseHovered扩展鼠标跟踪功能,支持限定坐标范围和仅在悬停时跟踪。AUTO
useMouseWheel获取鼠标在窗口中滚动时 deltaY 值的 React Hook。AUTO
useNetworkState跟踪浏览器网络连接状态。AUTO
useOrientation跟踪用户设备屏幕方向的 React 传感器 Hook。AUTO
usePageLeave鼠标离开页面时触发回调的 React 传感器 Hook。AUTO
usePinchZoom跟踪指针触摸事件变化并检测捏合差值的 React 传感器 HookAUTO
useScratch跟踪鼠标“擦动”(或“抓挠”)状态的 React 传感器 Hook。AUTO
useScrollDOM 元素中的滚动位置变化时重新渲染的 React 传感器 Hook。AUTO
useScrollbarWidth返回当前浏览器滚动条宽度的 Hook。AUTO
useScrolling跟踪用户是否正在滚动的 React 传感器 Hook。AUTO
useSearchParam跟踪浏览器位置搜索参数的 React 传感器 Hook。AUTO
useSize跟踪 HTML 元素尺寸的 React 传感器 Hook。AUTO
useStartTyping用户开始输入时触发回调的 React 传感器 Hook。可用于AUTO
useWindowScroll窗口滚动时重新渲染的 React 传感器 Hook。AUTO
useWindowSize跟踪浏览器窗口尺寸的 React 传感器 Hook。AUTO
UI
Hook描述调用方式
useAudio创建 <audio> 元素,跟踪其状态并提供播放控制功能。AUTO
useClickAwayReact UI Hook,用户AUTO
useCssReact UI Hook,可动态更改 [CSS][gen-5]。其作用类似于“虚拟 CSS” —AUTO
useDrop在拖放文件、链接以及复制粘贴时触发。AUTO
useFullscreen让元素全屏显示,可选在 iOS 上为全屏视频提供回退方案。AUTO
useSliderReact UI Hook,可让任意 HTML 元素具备滑动行为。支持鼠标和触摸,还AUTO
useSpeechReact UI Hook,可合成人声朗读给定字符串。AUTO
useVibrateReact UI Hook,使用 [Vibration API]( 通过设备的振动硬件提供物理反馈AUTO
useVideo创建 <video> 元素,跟踪其状态并提供播放控制功能。AUTO
动画
Hook描述调用方式
useHarmonicIntervalFn与 useInterval Hook 相同,但会以相同的延迟触发所有效果AUTO
useInterval基于 [Dan Abramov 在 overreacted.io 上的文章](https://overreacted.i 的声明式间隔 HookAUTO
useRafReact 动画 Hook,每次 requestAnimationFrame 时强制组件重新渲染,AUTO
useSpringReact 动画 Hook,会随时间更新单个数值EXTERNAL
useTimeout指定毫秒数后重新渲染组件。AUTO
useTimeoutFn在指定毫秒数后调用给定函数。AUTO
useTweenReact 动画 Hook,可在 0 到 1 之间补间一个数值。AUTO
useUpdateReact 工具 Hook,返回一个强制组件AUTO
副作用
Hook描述调用方式
useAsyncReact Hook,可解析 async 函数或返回AUTO
useAsyncFnReact Hook,为 async 函数返回状态和回调,或AUTO
useAsyncRetry使用 useAsync,并添加 retry 方法,以便轻松重试/刷新异步函数;AUTO
useBeforeUnloadReact 副作用 Hook,当用户尝试重新加载或关闭页面时显示浏览器警告。AUTO
useCookieReact Hook,返回当前 cookie 值以及用于更新 cookie 的回调AUTO
useCopyToClipboard将文本复制到用户的剪贴板。AUTO
useDebounceReact Hook,在距上次调用经过指定等待毫秒数后再调用函数AUTO
useErrorReact 副作用 Hook,返回一个错误调度器。AUTO
useFaviconReact 副作用 Hook,设置页面的 favicon。AUTO
useLocalStorageReact 副作用 Hook,管理单个 localStorage 键。AUTO
useLockBodyScrollReact 副作用 Hook,锁定 body 元素的滚动。适用于模态框和其他覆盖层AUTO
usePermissionReact 副作用 Hook,用于查询浏览器 API 的权限状态。AUTO
useRafLoop此 Hook 在 RAF 循环中调用给定函数,而不会让父组件重新渲染。AUTO
useSessionStorageReact 副作用 Hook,管理单个 sessionStorage 键。AUTO
useThrottle用于节流的 React Hook。AUTO
useThrottleFnReact Hook,调用函数后延迟后续函数调用,直到经过指定等待毫秒数AUTO
useTitleReact 副作用 Hook,设置页面标题。AUTO
生命周期
钩子描述调用方式
useCustomCompareEffect修改版的 useEffect 钩子,接受一个比较器,用于比较依赖项中的AUTO
useDeepCompareEffect修改版的 useEffect 钩子,对依赖项进行深度比较,而不是引用相等AUTO
useEffectOnceReact 生命周期钩子,只运行一次 effect。AUTO
useEventReact 传感器钩子,用于将 handler 订阅到事件。AUTO
useIsomorphicLayoutEffectuseLayoutEffect,在服务端渲染时不会显示警告,参见 [Alex Reardon 的文章AUTO
useLifecyclesReact 生命周期钩子,在组件AUTO
useLoggerReact 生命周期钩子,在组件经历各个生命周期时将参数记录到控制台。AUTO
useMountReact 生命周期钩子,在组件挂载后调用函数。如果你AUTO
useMountedState> 注意!: 尽管名称中有 State,此钩子不会导致组件重新渲染。AUTO
usePromiseReact 生命周期钩子,返回一个用于包装 promise 的辅助函数。AUTO
useShallowCompareEffect修改版的 useEffect 钩子,对每个依赖项进行浅比较,而不是引用AUTO
useUnmountReact 生命周期钩子,在组件即将卸载时调用函数。如果你AUTO
useUnmountPromise生命周期钩子,提供一个高阶 promise,在组件卸载时不会解析。AUTO
useUpdateEffectReact effect 钩子,忽略首次调用(例如挂载时)。其签名与AUTO
状态
Hook描述调用方式
createGlobalState用于创建全局共享状态的 React Hook。AUTO
createMemoHook 工厂,接收一个要记忆化的函数,并返回一个记忆化的 React Hook。AUTO
createReducer用于创建带自定义中间件的 reducer Hook 的工厂,其 API 与 [React 的 useReducer](htt 相同AUTO
createReducerContext用于创建行为与 [React 的 useReducer](https://reactjs.or 一致的 React context Hook 的工厂AUTO
createStateContext用于创建行为与 [React 的 useState](https://reactjs.org/ 一致的 React context Hook 的工厂AUTO
useBooleanuseToggle 的别名。提供切换函数的布尔状态 Hook。AUTO
useCounter用于跟踪数值的 React 状态 Hook。AUTO
useDefault当状态为 null 或 undefined 时返回默认值的 React 状态 Hook。AUTO
useFirstMountState如果组件刚刚挂载(首次渲染),则返回 true;否则返回 false。AUTO
useGetSet返回状态获取函数而不是AUTO
useGetSetStateuseGetSet 和 useGetSetState 的组合。AUTO
useLatest返回最新状态的 React 状态 Hook,详见 [React Hook 常见问题解答](https://reactjsAUTO
useList跟踪数组并提供修改数组的方法。AUTO
useMap跟踪对象值的 React 状态 Hook。AUTO
useMediatedState与标准 useState 非常相似,但加入了中介处理过程。AUTO
useMethods简化 useReducer 实现的 React Hook。AUTO
useMultiStateValidator每当给定状态中的任一状态发生变化时,都会调用验证函数。AUTO
useNumberuseCounter 的别名。提供实用函数的数值计数器状态。AUTO
useObservable跟踪 Observable 最新值的 React 状态 Hook。EXTERNAL
usePrevious返回先前状态的 React 状态 Hook,详见 [React Hook 常见问题解答](https://reactAUTO
usePreviousDistinct与 usePrevious 类似,但仅在值实际发生变化时才更新。这一点很重要AUTO
useQueue实现简单 FIFO 队列的 React 状态 Hook。AUTO
useRafState仅在 [requestAnimationFrame](https://develo 回调中更新状态的 React 状态 HookAUTO
useRendersCount跟踪组件的渲染次数,包括首次渲染。AUTO
useSet跟踪 [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referen 的 React 状态 HookAUTO
useSetState创建 setState 方法的 React 状态 Hook,其工作方式类似于AUTO
useStateList提供用于循环遍历状态列表的操作句柄。AUTO
useStateValidator每当给定状态发生变化时,都会调用验证函数。AUTO
useStateWithHistory保存指定数量的先前状态值,并提供用于在这些状态值之间切换的操作句柄。AUTO
useToggle跟踪布尔值的 React 状态 Hook。AUTO
其他
Hook描述调用方式
useEnsuredForwardedRef用于安全使用 ForwardedRef 的 React Hook。AUTO

评论

支持 Markdown