vueuse
VueUseのコンポーザブルを使用する場合に活用できます。状態管理、ブラウザAPI、センサー、ネットワーク、アニメーションなどの反応的なユーティリティを提供します。カスタムコンポーザブルを作成する前に、VueUseを確認してください。ほとんどのパターンは既に実装されています。
description の原文を見る
Use when working with VueUse composables - provides reactive utilities for state, browser APIs, sensors, network, animations. Check VueUse before writing custom composables - most patterns already implemented.
SKILL.md 本文
VueUse
Vue Composition の必須ユーティリティコレクション。カスタムコンポーザブルを作成する前に VueUse を確認してください。ほとんどのパターンはすでに実装されています。
現在の安定版: Vue 3.5+ 対応の VueUse 14.x
インストール
Vue 3:
pnpm add @vueuse/core
Nuxt:
pnpm add @vueuse/nuxt @vueuse/core
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@vueuse/nuxt'],
})
Nuxt モジュールはコンポーザブルを自動インポートするため、手動でインポートは不要です。
カテゴリ
| カテゴリ | 例 |
|---|---|
| State | useLocalStorage, useSessionStorage, useRefHistory |
| Elements | useElementSize, useIntersectionObserver, useResizeObserver |
| Browser | useClipboard, useFullscreen, useMediaQuery |
| Sensors | useMouse, useKeyboard, useDeviceOrientation |
| Network | useFetch, useWebSocket, useEventSource |
| Animation | useTransition, useInterval, useTimeout |
| Component | useVModel, useVirtualList, useTemplateRefsList |
| Watch | watchDebounced, watchThrottled, watchOnce |
| Reactivity | createSharedComposable, toRef, toReactive |
| Array | useArrayFilter, useArrayMap, useSorted |
| Time | useDateFormat, useNow, useTimeAgo |
| Utilities | useDebounce, useThrottle, useMemoize |
クイックリファレンス
必要に応じてコンポーザブルファイルを読み込みます:
| 作業内容 | 読み込むファイル |
|---|---|
| コンポーザブルを検索 | references/composables.md |
| 特定のコンポーザブル | composables/<name>.md |
ファイルの読み込み
タスクに基づいて、以下のリファレンスファイルの読み込みを検討してください:
-
references/composables.md- カテゴリまたは機能別に VueUse コンポーザブルを検索する場合
すべてのファイルを一度に読み込まないでください。 現在のタスクに関連するものだけを読み込みます。
よくあるパターン
状態の永続化:
const state = useLocalStorage('my-key', { count: 0 })
マウス位置の追跡:
const { x, y } = useMouse()
デバウンス処理された ref:
const search = ref('')
const debouncedSearch = refDebounced(search, 300)
共有コンポーザブル (シングルトン):
const useSharedMouse = createSharedComposable(useMouse)
SSR の注意点
多くの VueUse コンポーザブルは SSR 時に利用できないブラウザ API を使用しています。
isClient で確認する:
import { isClient } from '@vueuse/core'
if (isClient) {
// ブラウザ専用コード
const { width } = useWindowSize()
}
onMounted でラップする:
const width = ref(0)
onMounted(() => {
// ブラウザでのみ実行
const { width: w } = useWindowSize()
width.value = w.value
})
SSR 安全なコンポーザブルを使用する:
// これらは内部で isClient をチェックします
const mouse = useMouse() // サーバー上では {x: 0, y: 0} を返す
const storage = useLocalStorage('key', 'default') // サーバー上ではデフォルト値を使用
@vueuse/nuxt は SSR を自動処理します - コンポーザブルはサーバー上で安全なデフォルト値を返します。
ターゲット要素 Ref
DOM 要素ではなくコンポーネント ref をターゲットにする場合:
import type { MaybeElementRef } from '@vueuse/core' // ❌ 機能しません
// MaybeElementRef パターンを使用します
import { unrefElement } from '@vueuse/core'
// コンポーネント ref は .$el で DOM 要素を取得する必要があります
const compRef = ref<ComponentInstance>()
const { width } = useElementSize(compRef)
const el = computed(() => unrefElement(compRef)) // .$el を取得
const { width } = useElementSize(el) // ✅ 機能します
または $el に直接アクセスする:
const compRef = ref<ComponentInstance>()
onMounted(() => {
const el = compRef.value?.$el as HTMLElement
const { width } = useElementSize(el)
})
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- xvaara
- リポジトリ
- xvaara/sleepwalkers
- ライセンス
- MIT
- 最終更新
- 2026/4/9
Source: https://github.com/xvaara/sleepwalkers / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。