Skip to content

🚀 コンポジション API - 開発の利器

🌟 紹介

Vant コンポジション API の世界へようこそ!🎉

@vant/use は様々な開発ツールが詰まった宝箱のような存在です 🧰。ここでは、一連の洗練されたコンポジション API を提供しています。これらの API は Vant コンポーネント内部で重要な役割を果たすだけでなく、日常の開発においても得力する助手となります!

🎯 なぜ @vant/use を選ぶのか?

  • 即座に使える:車輪の再発明をする必要がなく、実戦で検証済みの API をそのまま使用
  • 🔧 高い再利用性:一度導入すれば、どこでも使用可能
  • 📱 モバイル最適化:モバイルシーン向けに特別に最適化
  • 🛡️ 型安全:完全な TypeScript サポート
  • 🎨 Vue 3 ネイティブ:Composition API をベースに設計

📦 インストール

Vant の依存には既に @vant/use が含まれていますが、より良い開発体験と型ヒントを得るために、明示的にインストールすることを強く推奨します:

shell
# npm を使用する場合
npm i @vant/use

# yarn を使用する場合
yarn add @vant/use

# pnpm を使用する場合
pnpm add @vant/use

# Bun を使用する場合
bun add @vant/use

🎮 クイックスタート

簡単な例を通して、コンポジション API の魅力を実感してみましょう!以下では useWindowSize を使用してウィンドウサイズをリアルタイムで取得します:

vue
<template>
  <div class="window-info">
    <h3>📱 現在のウィンドウ情報</h3>
    <p>幅:{{ width }}px</p>
    <p>高さ:{{ height }}px</p>
    <p>スクリーンタイプ:{{ screenType }}</p>
  </div>
</template>

<script setup>
import { useWindowSize } from '@vant/use';
import { computed } from 'vue';

// ウィンドウサイズを取得し、自動的に変化に反応
const { width, height } = useWindowSize();

// 幅に基づいてデバイスタイプを判断
const screenType = computed(() => {
  if (width.value < 768) return '📱 モバイルデバイス';
  if (width.value < 1024) return '📟 タブレットデバイス';
  return '💻 デスクトップデバイス';
});
</script>

🎯 実際の使用シーン

📱 レスポンシブレイアウト制御

js
import { useWindowSize } from '@vant/use';

const { width } = useWindowSize();
const isMobile = computed(() => width.value < 768);

// スクリーンサイズに応じて動的にレイアウトを調整
watch(isMobile, (mobile) => {
  if (mobile) {
    // モバイルレイアウトのロジック
  } else {
    // デスクトップレイアウトのロジック
  }
});

🎪 インタラクティブ体験の最適化

js
import { useClickAway, useToggle } from '@vant/use';

const [visible, toggle] = useToggle(false);
const popupRef = ref();

// 外部領域をクリックしてポップアップを閉じる
useClickAway(popupRef, () => {
  if (visible.value) {
    toggle(false);
  }
});

📚 API リスト

以下は Vant が提供するすべてのコンポジション API です。それぞれが開発に役立つ実用的なツールです:

🔧 API 名📝 機能説明🎯 適用シーン
useClickAway🖱️ 要素の外部クリックを監視ポップアップ、ドロップダウンメニュー、検索提案
useCountDown⏰ カウントダウン管理機能を提供認証コード、イベントカウントダウン、限定セール
useCustomFieldValue📝 カスタムフォームコンポーネント内のフィールドフォームコンポーネント開発、データバインディング
useEventListener👂 簡単にイベントをバインドスクロール監視、キーボードイベント、タッチイベント
usePageVisibility👁️ ページの可視状態を取得動画再生制御、データポーリング最適化
useRect📐 要素のサイズとビューポートに対する位置を取得アニメーション位置決め、スクロール位置決め、衝突検出
useRelation🔗 親子コンポーネント間の関係を確立コンポーネントライブラリ開発、複雑なコンポーネント通信
useScrollParent📜 要素の直近のスクロール可能な親要素を取得無限スクロール、仮想スクロール、スクロール同期
useToggle🔄 ブール値間の切り替えを行うスイッチ制御、モーダル、アコーディオン
useWindowSize📏 ブラウザウィンドウのビューポート幅と高さを取得レスポンシブデザイン、チャートの自動調整
useRaf🎬 requestAnimationFrame 管理機能を提供アニメーション制御、パフォーマンス最適化、フレームレート制御

💡 ベストプラクティス

🎯 必要なものだけ導入

js
// ✅ 推奨:必要なものだけ導入
import { useWindowSize, useToggle } from '@vant/use';

// ❌ 避ける:全量導入
import * as VantUse from '@vant/use';

🔄 組み合わせて使用

js
// 複数の API を組み合わせて使用し、より強力な機能を作り出す
import { useWindowSize, useEventListener, useToggle } from '@vant/use';

export function useResponsiveMenu() {
  const { width } = useWindowSize();
  const [menuVisible, toggleMenu] = useToggle(false);
  
  // ESC キーを監視してメニューを閉じる
  useEventListener('keydown', (e) => {
    if (e.key === 'Escape') {
      toggleMenu(false);
    }
  });
  
  // デスクトップでは自動的にメニューを表示
  watch(width, (newWidth) => {
    if (newWidth >= 1024) {
      toggleMenu(true);
    }
  });
  
  return {
    menuVisible,
    toggleMenu,
    isMobile: computed(() => width.value < 768)
  };
}

🛠️ 開発スキル

📊 パフォーマンスモニタリング

js
import { useWindowSize, useRaf } from '@vant/use';

// ウィンドウサイズの変化頻度を監視
const { width, height } = useWindowSize();
let resizeCount = 0;

watch([width, height], () => {
  resizeCount++;
  console.log(`ウィンドウサイズ変更回数: ${resizeCount}`);
});

🎨 デバッグツール

js
// 開発環境用のデバッグアシスタント
if (process.env.NODE_ENV === 'development') {
  const { width, height } = useWindowSize();
  
  // コンソールに現在のウィンドウ情報を表示
  watch([width, height], ([w, h]) => {
    console.log(`🖥️ ウィンドウサイズ: ${w} x ${h}`);
  }, { immediate: true });
}

🌐 ブラウザ互換性

すべての API は広範な互換性テストを受けており、以下をサポートしています:

  • 現代ブラウザ:Chrome 60+、Firefox 60+、Safari 12+
  • モバイルブラウザ:iOS Safari 12+、Android Chrome 60+
  • WeChat Mini Program:H5 ページをサポート
  • ⚠️ IE ブラウザ:polyfill のサポートが必要

📖 関連ドキュメント

🎯 コアコンセプト

  • Vue 3 Composition API - コンポジション API の設計理念を理解する
  • VueUse - より多くの実用的な Vue コンポジションツールライブラリ

🛠️ 開発ツール

🎨 デザインシステム


🎉 コンポジション API の旅を始めましょう! 興味のある API を選び、詳細ドキュメントを表示して、開発をより効率的で楽しいものにしましょう!

Vant に基づく企業向けモバイルソリューション