mantine-hooks について
独立した `@mantine/hooks` React Hooks パッケージを使うコーディングエージェント向けのリファレンススキルです。フックの選択、SSR の考慮点、実装パターン、9.x への移行を扱います。
主な機能
- 01フックの選択と使い方
- 02状態、ストレージ、イベントのパターン
- 03SSR とハイドレーションの考慮点
- 04React 19.2+ のバージョン指針
- 058 から 9 への移行メモ
- 06検証とテストの提案
活用シーン
- 01React の機能に使うフックの選択
- 02SSR でのストレージやメディアフックの処理
- 03フックの使用法を 8 から移行
- 04フックのインポートと型の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill mantine-hooksインストール後、Claude Code で/mantine-hooksを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/advanced-interaction.mdcatalog.mdobservers-timing.mdsetup-core.mdsource-map.mdstate-storage.mdui-events.md詳細
Mantine Hooks
このスキルは @mantine/hooks のみ に使用してください。これは単独の React hooks パッケージです。ユーザーがこのスキルとは別に明示的に求めない限り、@mantine/core、@mantine/form、その他の @mantine/* パッケージは取り込まないでください。
記憶よりも最新のドキュメントを優先してください。説明は @mantine/[email protected](npm の latest スナップショット:9.6.3、peer react@^19.2.0。9.5.1~9.6.3 では新しい hook export は追加されていません)に基づいてください。
ワークフロー
- コードを変更する前に、プロジェクトを確認します。
- インストールされている
@mantine/hooksのバージョンと React の peer バージョン。 - アプリが SPA のみか、SSR/ハイドレーションを使用しているか(
getInitialValueInEffectとメディア/ストレージの hook に影響します)。 - 使用する hook の種類:状態、ストレージ、イベント、オブザーバー、タイミング、インタラクションビルダー。
- インストールされている
- 動作や移行に関わる場合は、source-map.md でバージョンとドキュメントの URL を最新のものに更新します。
- インストール、インポート、ユーティリティ、SSR のデフォルト値、型、パッケージの境界については、setup-core.md を使用します。
- ブール値/リスト/オブジェクト/Map/Set の状態、非制御値、ストレージ、キュー、ページネーション、履歴については、state-storage.md を使用します。
- クリックアウトサイド、ホットキー、フォーカス、ホバー/マウス、クリップボード、フルスクリーン、長押し、ウィンドウ/ドキュメントのイベントについては、ui-events.md を使用します。
- メディアクエリ、オブザーバー、デバウンス/スロットル、タイマー、アイドル状態/ネットワーク/OS、フェッチについては、observers-timing.md を使用します。
- 移動/ドラッグ/放射状配置、折りたたみ、マスク、ロービングインデックス、スプリッター、フローティングウィンドウ、選択、スクロールのヘルパーについては、advanced-interaction.md を使用します。
- ドキュメントへのリンク付きの hook 一覧については、catalog.md を使用します。
実装時の判断
@mantine/hooksからのみインポートしてください。 名前付きインポートを優先してください:import { useDisclosure, clamp } from '@mantine/hooks'。- パッケージは単体で利用できます:React のみがピア依存関係です。他の Mantine パッケージがなくても、どの React ウェブアプリでも安全に使用できます。状態管理フック(例:
usePagination、useQueue)は React Native でも動作しますが、DOM/ウィンドウ関連のフックは動作しません。 - 9.x では React 19.2 以降が必要です。一部のフックは React 19 の
useEffectEventを使用しています(usePageLeave、useWindowEvent、useHotkeys、useClickOutside、useCollapse)。リスナーを安定させるためだけに、無理にuseCallbackでラップしないでください。 - 独自に型を定義するのではなく、エクスポートされているオプション型/戻り値型(
UseDisclosureOptions、またはuseDisclosure.Optionsのような名前空間形式)を優先してください。 - SSR に注意が必要なフック(
useMediaQuery、useColorScheme、useReducedMotion、useLocalStorage/useSessionStorage、ビューポートサイズ):デフォルトではgetInitialValueInEffect: trueによって、マウント後に値を計算します。サーバーレンダリングで明示的なinitialValue/defaultValueを渡してください。初回描画で実際の値が必要な CSR 専用アプリの場合に限り、getInitialValueInEffect: falseを設定してください。 - ref を返すフックは、
useMergedRef/mergeRefsと組み合わせてください(例:useClickOutside+useFocusTrap+ ローカル ref)。 - デバウンスの使い分け:
useDebouncedValue— 制御元の値はすぐに更新され、デバウンスされた値をエフェクト/検索に使用します。useDebouncedState— setter 自体がデバウンスされます(非制御スタイル)。useDebouncedCallback— 関数をデバウンスします(flush/cancel/isPending)。
- スロットルも同様に使い分けます:
useThrottledValue/useThrottledState/useThrottledCallback。 - フルスクリーン:
useFullscreenDocumentまたはuseFullscreenElementを使用してください。9.x にuseFullscreenという単一のエクスポートはありません。 - マウス:
useMouseは要素の ref に基づきます。useMousePositionはドキュメントレベルの位置を追跡します。 - コールバック ref を使うフック(
useResizeObserver、useMouse、useMutationObserver、多くのインタラクション用フック)は、動的なノードの差し替えに対応しています。古くなったuseRefの代入パターンではなく、返される ref コールバックを優先してください。 useFetchは薄いラッパーのフェッチヘルパーであり、サーバー状態ライブラリではありません。単発の小規模な読み込みには適していますが、Query/SWR のように扱わないでください。- 周辺プロジェクトがすでに他の Mantine パッケージに依存しており、ユーザーがその利用を求めている場合を除き、サンプルコードや生成コードに他の Mantine パッケージを含めないでください。
移行時の注意点(8 → 9)
- ピア依存の React は 19.2 以降です。
useFullscreen→useFullscreenDocument/useFullscreenElement。useMouseの分割 →useMouse+useMousePosition。useResizeObserver/useMutationObserver→ コールバック ref API。外部ノードにはuseMutationObserverTargetを使用してください。useDisclosureにhandlers.set(boolean)が追加されました。- 型の名称変更:
UseScrollSpyReturnType→UseScrollSpyReturnValue、StateHistory→UseStateHistoryValue、OS→UseOSReturnValue。 useMediaQueryでは、非常に古い Safari 向けのmatchMediaフォールバックが削除されました。
検証
リポジトリに既存のチェックがある場合は、そちらを優先してください。@mantine/hooks に関する実質的な作業では、関連する項目を実施してください:
- インストール済みの
@mantine/hooksの型宣言と、エクスポートされているオプション型/戻り値型に対して型チェックを行います。 - インポート元が
@mantine/hooksのみに解決されることを確認します(フックのみのタスクで@mantine/coreを誤って使用していないこと)。 - SSR/ハイドレーション:メディア/ストレージ関連のフックで、サーバー HTML に意図した初期値が使われることを確認します。
getInitialValueInEffectの変更による表示のちらつきが再発しないことも確認します。 - インタラクションテスト:外部クリック対象のノード(複数ノードのリストには状態コールバックを使用し、内部ハンドラーが伝播を停止する場合は
capture: trueを指定)、ホットキーmodのクロスプラットフォーム動作、フォーカストラップと ref のマージ、アンマウント時のデバウンスのcancel/flush。 - 移行チェック:削除された
useFullscreen、古いマウス/オブザーバーの ref パターン、名称変更された型を検索します。
コメント
Markdown 対応