mcpField
S
shadcn-hooks

shadcn-hooks

github.com/debbl开发6181 次安装6 周前更新
代码仓库

关于 shadcn-hooks

面向 React 项目的 shadcn-hooks 决策与实现指南,帮助开发者按需求选择并正确使用 hooks。它涵盖状态、生命周期、浏览器等类别,并提供外部依赖的使用规则。

主要功能

  1. 01按需求匹配合适的 hook
  2. 02指导 hook 的调用方式
  3. 03覆盖状态与生命周期管理
  4. 04提供浏览器功能 hooks
  5. 05标注外部依赖使用条件

适用场景

  1. 01为 React 功能选择 hook
  2. 02实现防抖或节流逻辑
  3. 03跟踪浏览器状态与事件
  4. 04检查是否适用外部数据 hooks

安装

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

$npx skills add https://github.com/debbl/shadcn-hooks --skill shadcn-hooks

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

包含的文件

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

references/
useActiveElement.md
useBattery.md
useBoolean.md
useClickAnyWhere.md
useClickAway.md
useClipboard.md
useControllableValue.md
useCounter.md
useCreation.md
useCustomCompareEffect.md
useDebounce.md
useDebounceEffect.md
useDebounceFn.md
useDeepCompareEffect.md
useDeepCompareLayoutEffect.md
useDocumentVisibility.md
useEffectEvent.md
useEffectWithTarget.md
useElementSize.md
useEventListener.md
useFps.md
useFullscreen.md
useHash.md
useHover.md
useInterval.md
useInViewport.md
useIsHydrated.md
useIsMatchMedia.md
useIsomorphicLayoutEffect.md
useIsOnline.md

详细介绍

shadcn-hooks

此技能是 React 项目中使用 shadcn-hooks 的决策与实现指南。它将需求映射到最合适的 Hook,应用正确的使用模式,并优先采用基于 Hook 的解决方案,而非定制代码,以保持实现简洁、易于维护且高效。

适用场景

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

安装

优先使用 shadcn CLI——它只会将你需要的 Hook 复制到项目中(无需额外的运行时依赖,且利于摇树优化):

# Install a single hook (recommended)
npx shadcn@latest add @shadcnhooks/use-boolean

# Install multiple hooks at once
npx shadcn@latest add @shadcnhooks/use-boolean @shadcnhooks/use-mount @shadcnhooks/use-debounce

或者,安装完整的 npm 包(包含所有 Hook):

npm install shadcn-hooks

使用 shadcn CLI 时,从本地路径导入(例如,import { useBoolean } from "@/hooks/use-boolean")。 使用 npm 包时,从 "shadcn-hooks" 导入(例如,import { useBoolean } from "shadcn-hooks")。

函数

下方列出的所有函数都属于 shadcn-hooks。每个部分按函数功能分类。

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

状态
FunctionDescriptionInvocation
useBoolean布尔状态,提供 set、setTrue、setFalse、toggle 辅助函数AUTO
useControllableValue同时支持受控和非受控组件模式AUTO
useCounter计数器,提供 inc、dec、set、reset 辅助函数AUTO
useDebounce防抖的响应式值AUTO
useResetState状态附带 reset 函数,可恢复初始值AUTO
useThrottle节流的响应式值AUTO
useToggle在两个值之间切换,并提供实用操作AUTO
高级
函数描述调用方式
useCreation使用深度依赖比较的记忆化工厂函数AUTO
useCustomCompareEffect使用自定义依赖比较器的 useEffectAUTO
useLatest始终保存最新值的 RefAUTO
useLockFn防止异步函数并发执行AUTO
useMemoizedFn引用稳定、标识永不改变的函数AUTO
usePrevious返回状态的上一个值AUTO
生命周期
函数描述调用方式
useDebounceEffect防抖的 useEffectAUTO
useDebounceFn带有 run、cancel、flush 控制项的防抖函数AUTO
useDeepCompareEffect使用深度依赖比较的 useEffectAUTO
useDeepCompareLayoutEffect使用深度依赖比较的 useLayoutEffectAUTO
useEffectEventReact 19 的 useEffectEvent 补充实现AUTO
useEffectWithTarget支持将目标 DOM 元素作为依赖项的 useEffectAUTO
useInterval自动清理的间隔计时器AUTO
useIsHydrated客户端水合完成后返回 trueAUTO
useIsomorphicLayoutEffect在客户端使用 useLayoutEffect,在服务端使用 useEffectAUTO
useMount仅在组件挂载时运行回调AUTO
useThrottleEffect节流的 useEffectAUTO
useThrottleFn带有 run、cancel、flush 控制项的节流函数AUTO
useTimeout自动清理的超时计时器AUTO
useUnmount在组件卸载时运行清理操作AUTO
useUpdate返回一个强制组件重新渲染的函数AUTO
useUpdateEffect跳过首次渲染的 useEffectAUTO
浏览器
函数描述调用方式
useActiveElement跟踪当前获得焦点的元素AUTO
useBattery响应式电量和充电信息AUTO
useClickAnyWhere监听文档任意位置的点击事件AUTO
useClickAway检测目标元素之外的点击AUTO
useClipboard支持读取和写入的响应式 Clipboard APIAUTO
useDocumentVisibility响应式文档可见性状态AUTO
useElementSize通过 ResizeObserver 获取响应式元素尺寸AUTO
useEventListener声明式事件监听器,自动清理AUTO
useFps响应式 FPS(每秒帧数)测量AUTO
useFullscreen响应式 Fullscreen APIAUTO
useHash响应式 window.location.hashAUTO
useHover响应式元素悬停状态AUTO
useInViewport通过 IntersectionObserver 跟踪元素可见性AUTO
useIsMatchMedia响应式 CSS 媒体查询匹配状态AUTO
useIsOnline响应式网络在线/离线状态AUTO
useMouse响应式鼠标/触摸指针坐标AUTO
useNetwork响应式网络连接信息AUTO
useOs响应式浏览器操作系统检测AUTO
useScrollLock锁定/解锁目标元素的滚动AUTO
useTextSelection响应式文本选择状态及其边界矩形AUTO
useTitle响应式文档标题管理AUTO
开发
函数描述调用方式
useWhyDidYouUpdate记录两次渲染之间哪些 props 发生了变化(仅用于调试)AUTO
外部
函数描述调用方式
useMcp来自 use-mcp 的 Model Context Protocol 客户端 HookEXTERNAL
useQuery来自 @tanstack/react-query 的数据获取 HookEXTERNAL
useStickToBottom来自 use-stick-to-bottom 的滚动跟随行为EXTERNAL
useSWR来自 swr 的数据获取 HookEXTERNAL

评论

支持 Markdown