mcpField
R
reactuse

reactuse

github.com/siberiacancode开发23174 次安装4 周前更新
代码仓库

关于 reactuse

reactuse 是面向 React.js 和 Next.js 项目的 reactuse Hook 选型与实现指南。它帮助开发者按需求选择 Hook、遵循调用规则并查阅详细参考,优先采用库内方案而非自定义实现。

主要功能

  1. 01按需求匹配合适的 Hook
  2. 02说明各 Hook 的调用规则
  3. 03按能力分类整理 Hook
  4. 04提供详细参考文档指引
  5. 05优先使用库内 Hook

适用场景

  1. 01为 React 功能选择 Hook
  2. 02在组件中实现浏览器交互
  3. 03处理异步读取与变更
  4. 04确认 Hook 是否需要外部依赖

安装

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

$npx skills add https://github.com/siberiacancode/agent-skills --skill reactuse

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

包含的文件

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

AGENTS.md
metadata.json
README.md
rules/
_sections.md
_template.md
cn.md
createContext.md
createContextHook.md
createEventEmitter.md
createReactiveContext.md
createSharedHook.md
createStore.md
makeDestructurable.md
target.md
useActiveElement.md
useAsync.md
useAsyncEffect.md
useAudio.md
useAutoScroll.md
useBatchedCallback.md
useBattery.md
useBluetooth.md
useBoolean.md
useBreakpoints.md
useBroadcastChannel.md
useBrowserLanguage.md
useBrowserLocation.md
useClickOutside.md
useClipboard.md
useConst.md

详细介绍

Reactuse

此技能是面向 react.js / next.js 项目的 reactuse 库决策与实现指南。它将需求映射到最合适的 reactuse hook,采用正确的用法模式,并优先使用基于 hook 的解决方案,而非定制代码,以保持实现简洁、易维护且高效。

何时应用

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

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

Hooks

以下列出的所有 hook 都属于 reactuse 库。每个部分都根据 hook 的功能进行分类。

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

上游已屏蔽的类别:Reactuse 在近期版本中还导出了 Humor hook(useFul、useLess、useOnce)。此技能有意不支持或推荐这些 hook,因为上游将其标记为玩笑或非生产用途的工具。

Helpers
HookDescriptionInvocation
cn规范化 React className 的条件类名。HIGH
createContext创建带有 provider 和 selector hook 的类型化 context。HIGH
createContextHook将一个 hook 结果限定在 React 子树内。LOW
createEventEmitter创建带订阅 hook 的类型安全事件发射器。LOW
createReactiveContext创建具有优化更新的类型化 context selector。LOW
createSharedHook在多个使用方之间共享一个 hook 实例。LOW
createStore创建一个具有状态、订阅和 hook 的外部 store。MEDIUM
makeDestructurable支持通过对象和元组的方式使用同一个值。LOW
target将 DOM target 包装为 Reactuse hook 预期的形式。MEDIUM
元素
Hook描述调用频率
useActiveElement跟踪当前获得焦点的元素。LOW
useAutoScroll自动将容器滚动到底部。LOW
useClickOutside点击目标元素外部时调用回调。HIGH
useContextMenu将次要点击和长按手势转换为菜单状态。LOW
useDoubleClick检测双击,并可选择配置单击处理程序。MEDIUM
useDraggable将指针移动转换为拖动位置状态。LOW
useDropZone创建带有文件状态的拖放区域。MEDIUM
useFileDialog打开文件选择器并返回所选文件。LOW
useFocus跟踪焦点状态,并提供聚焦/失焦控制。MEDIUM
useFocusTrap将焦点限制在指定元素内。MEDIUM
useHover跟踪元素的悬停状态。MEDIUM
useImage在浏览器中加载图像,并返回图像特定的加载状态。LOW
useLockScroll锁定元素或文档主体的滚动。MEDIUM
useLongPress检测长按交互。MEDIUM
usePaint在画布上绘图并提供绘图控制。LOW
useScript加载脚本并返回其状态。LOW
useSize观察元素的宽度和高度。LOW
useSticky检测粘性元素是否已固定。LOW
useTextareaAutosize根据内容自动调整文本区域大小。MEDIUM
useTextDirection获取并设置元素的文本方向。MEDIUM
useWindowFocus返回窗口当前的焦点状态。LOW
useWindowSize返回窗口当前的宽度和高度。LOW
异步
Hook描述调用频率
useAsync跟踪返回 Promise 的回调的加载、错误和数据状态。MEDIUM
useLockCallback防止回调同时运行多次。MEDIUM
useMutation定义具有加载、错误和成功状态的变更逻辑。HIGH
useOptimistic允许在异步更新完成前显示乐观值。MEDIUM
useQuery将可中止的异步读取封装为查询状态,并提供刷新控制。HIGH
生命周期
Hook描述调用频率
useAsyncEffect运行异步副作用。MEDIUM
useDidUpdate仅在更新时运行副作用(不在首次挂载时运行)。HIGH
useIsFirstRender仅在首次渲染时返回 true。LOW
useIsomorphicLayoutEffect在客户端使用 useLayoutEffect,在服务端使用 useEffect。HIGH
useMount在组件挂载时运行一次回调。HIGH
useShallowEffect仅在依赖项浅层或深层发生变化时运行副作用。LOW
useUnmount在组件卸载时运行回调。HIGH
浏览器
Hook描述调用频率
useAudio管理音频播放(播放/暂停/停止)、音量、速率和精灵片段。低
useBattery返回电池状态和支持状态。低
useBluetooth请求连接蓝牙设备。低
useBreakpoints管理响应式断点和辅助判断函数。中
useBroadcastChannel支持跨标签页/窗口通信。低
useBrowserLocation返回响应式位置状态和历史导航控件。中
useClipboard读取并复制剪贴板中的文本。中
useCopy复制文本,并在延迟后重置状态。中
useCssVar读取和写入 CSS 自定义属性。低
useDeviceList将可用的媒体输入和输出设备分组,供选择器使用。中
useDisplayMedia将视频元素连接到屏幕捕获流。低
useDocumentEvent为 document 添加事件监听器。低
useDocumentTitle读取和更新文档标题。低
useDocumentVisibility返回文档可见性状态。低
useEventListener为目标添加事件监听器。高
useEventSource提供 EventSource 的响应式封装。低
useEyeDropper提供对 EyeDropper API 的访问。低
useFavicon读取和更新当前网站图标。低
useFileSystemAccess通过 File System Access API 读取和写入本地文件。低
useFps测量每秒帧数。低
useFullscreen控制元素的全屏状态。低
useGamepad返回已连接的游戏手柄及其活动状态。低
useGeolocation在 React 状态中保存最新的浏览器地理位置读数。中
useMeasure测量元素的大小和位置。低
useMediaControls提供音频/视频元素的控件和状态。低
useMediaStream将摄像头或麦克风捕获内容连接到媒体元素。中
useMediaQuery返回媒体查询是否匹配。中
useMemory返回当前 JS 堆内存使用量。低
useNetwork跟踪在线状态和连接信息。低
useNotification管理通知权限和最新通知。中
useOnline返回用户是否在线。中
useObjectUrl创建和撤销对象 URL低
useOtpCredential从用户代理请求 OTP 凭据。低
usePermission跟踪浏览器权限查询状态。中
usePictureInPicture控制视频元素的画中画模式。低
usePointerLock提供响应式指针锁定控件。低
usePostMessage在窗口/框架之间接收和发送消息。低
useRaf在每个动画帧上运行回调。低
useShare触发原生分享对话框。中
useSpeechRecognition将浏览器语音识别结果转换为转录文本状态。低
useSpeechSynthesis将文本转换为语音输出,并提供播放状态。低
useVibrate触发振动,可选设置间隔。低
useVirtualKeyboard跟踪虚拟键盘状态并提供控件。低
useWakeLock控制 Wake Lock API 状态。低
useWebSocket使组件保持与 WebSocket 端点的连接。中
useWebWorker将 Web Worker 连接到 React 数据和生命周期状态。低
useWebWorkerCallback在主线程之外运行独立函数。低
实用工具
Hook描述调用频率
useBatchedCallback批量处理调用并将其转发给回调函数。MEDIUM
useConst返回一个仅初始化一次的常量值。HIGH
useDebounceCallback创建一个带有取消方法的防抖回调函数。HIGH
useDebounceEffect依赖项变化后,延迟一段时间运行副作用。HIGH
useDebounceState创建一个防抖状态设置器。HIGH
useDebounceValue返回一个值的防抖版本。HIGH
useDevicePixelRatio返回当前设备像素比。LOW
useEvent返回一个稳定的回调引用,该引用始终调用最新的处理函数。HIGH
useLastChanged记录最后一次变更的时间戳。LOW
useLatest返回一个稳定的 ref,始终指向最新的值。MEDIUM
usePrevious返回上一个值。LOW
useThrottleCallback创建一个带有取消方法的节流回调函数。MEDIUM
useThrottleEffect依赖项变化时,每个延迟周期内至多运行一次副作用。MEDIUM
useThrottleState创建一个节流状态设置器。MEDIUM
useThrottleValue返回一个值的节流版本。MEDIUM
状态
Hook描述调用频率
useBoolean管理布尔状态,并提供切换辅助函数。HIGH
useControllableState支持受控和非受控状态模式。MEDIUM
useCookie读取和写入 Cookie 值。MEDIUM
useCookies将所有 Cookie 作为单个对象进行管理。MEDIUM
useCounter管理带有边界限制的数值计数器。LOW
useCycleList将有序选项建模为当前值,并提供导航辅助函数。MEDIUM
useDefault返回一个值;如果该值为 null 或 undefined,则返回提供的默认值。MEDIUM
useDisclosure管理打开/关闭状态,并提供辅助函数。HIGH
useField将一个非受控字段连接到验证和辅助状态。MEDIUM
useForm协调类型化的非受控表单值和验证。MEDIUM
useHash管理 URL 哈希值。LOW
useList管理数组,并提供辅助方法。MEDIUM
useLocalStorage管理 localStorage 中的值。HIGH
useMap管理 Map,并提供辅助方法。HIGH
useMask使掩码值、原始值、显示值和光标状态保持同步。MEDIUM
useMergedRef将多个 ref 合并为单个 ref 回调。MEDIUM
useObject管理对象状态,并提供用于更新和键操作的辅助方法。MEDIUM
useOffsetPagination管理基于偏移量的列表分页状态。MEDIUM
useQueue管理队列,并提供添加/移除辅助函数。MEDIUM
useRafState在 requestAnimationFrame 中更新状态。LOW
useRefState创建类似 ref 的状态,该状态会在赋值时更新。LOW
useSessionStorage管理 sessionStorage 中的值。MEDIUM
useSet管理 Set,并提供辅助方法。MEDIUM
useStateHistory保存状态及其撤销/重做历史记录。MEDIUM
useStep创建步进器,并提供前进/后退辅助函数。MEDIUM
useStorage管理 Web Storage 中的值。HIGH
useToggle布尔切换器,并提供实用函数。HIGH
useUrlSearchParam将单个 URL 查询参数与状态同步。HIGH
useUrlSearchParams将多个 URL 查询参数与状态同步。HIGH
useValidatedState保存一个值,以及其有效性和上一个有效值。MEDIUM
useWizard管理向导步骤和历史记录。MEDIUM
用户
Hook描述调用频率
useBrowserLanguage返回当前浏览器语言。MEDIUM
useOperatingSystem根据用户代理返回用户的操作系统。LOW
usePreferredColorScheme返回用户偏好的配色方案。MEDIUM
usePreferredContrast返回用户的对比度偏好。MEDIUM
usePreferredDark返回用户是否偏好深色模式。MEDIUM
usePreferredLanguages返回用户偏好的语言。MEDIUM
usePreferredReducedMotion返回用户的减少动态效果偏好。LOW
传感器
Hook描述调用频率
useDeviceMotion通过 snapshot 和 watch() 提供设备运动数据。LOW
useDeviceOrientation提供当前设备方向。LOW
useHotkeys将键盘快捷键限定到目标或返回的 ref。MEDIUM
useIdle跟踪用户是否处于空闲状态以及最后活跃时间。LOW
useInfiniteScroll在接近滚动边缘时触发受控加载。MEDIUM
useIntersectionObserver跟踪元素的相交状态。MEDIUM
useKeyboard在目标上注册 keydown/keyup 监听器。MEDIUM
useKeyPress跟踪特定按键是否被按下。MEDIUM
useKeysPressed跟踪当前按下的所有按键。LOW
useMouse跟踪鼠标相对于页面和元素的坐标。LOW
useMutationObserver观察元素的 DOM 变更。LOW
useOrientation返回当前屏幕方向和锁定控制。LOW
usePageLeave检测鼠标何时离开页面。LOW
useParallax根据鼠标或设备方向创建视差效果。LOW
usePerformanceObserver观察性能条目。LOW
useResizeObserver观察元素的尺寸变化。LOW
useScroll跟踪滚动状态并提供滚动辅助功能。LOW
useScrollIntoView将元素滚动到视野内,并提供触发器。LOW
useScrollTo滚动到特定位置,并提供触发器。LOW
useSwipe将触摸和指针移动转换为滑动状态。LOW
useTextSelection跟踪文本选择详情。LOW
useVisibility跟踪元素在视口中是否可见。MEDIUM
useWindowEvent为 window 对象附加事件监听器。LOW
useWindowScroll跟踪窗口滚动位置并提供 scrollTo。LOW
时间
Hook描述调用频率
useInterval创建一个可暂停和恢复的时间间隔。HIGH
useProgress创建进度状态,并提供自动递增控制。MEDIUM
useStopwatch创建一个带有开始、暂停和重置控制的秒表。HIGH
useTime提供拆分为多个字段的当前时间。MEDIUM
useTimeout延迟后运行回调,并返回一个 ready 标记。MEDIUM
useTimer创建一个带有控制项和回调的倒计时器。MEDIUM
调试
Hook描述调用频率
useLogger记录组件的挂载、更新和卸载。LOW
useRenderCount返回组件的渲染次数。LOW
useRenderInfo提供渲染次数和耗时信息,并支持可选的日志记录。LOW
useRerender按需强制组件重新渲染。MEDIUM

评论

支持 Markdown