Skip to content

ActionSheet アクションシート - Vant 4

ActionSheet アクションシート

📋 紹介

アクションシートはエレガントなインタラクティブコンポーネントです!画面下部から表示され、現在の状況に関連する複数のオプションをユーザーに提供します。シェア、編集、削除などの操作にかかわらず、アクションシートによってユーザーは素早く選択を行い、スムーズな操作体験を得ることができます。

📦 導入

以下の方法でグローバルにコンポーネントを登録します。詳細な登録方法についてはコンポーネント登録を参照してください。

js
import { createApp } from 'vue'; 
import { ActionSheet } from 'vant'; 
const app = createApp(); 
app.use(ActionSheet);

🎯 コードデモ

基本的な使い方

アクションシートは actions 属性でオプションを定義します。actions 属性はオブジェクトからなる配列で、配列内の各オブジェクトが1列を設定します。オブジェクトのフォーマットについては、ドキュメント下部の表を参照してください。簡単な設定で、機能の完全なアクションシートを実装できます!

js
import { ref } from 'vue'; 
import { showToast } from 'vant'; 
export default { 
    setup() { 
        const show = ref(false); 
        const actions = [ { name: 'オプション1' }, { name: 'オプション2' }, { name: 'オプション3' }, ]; 
        const onSelect = (item) => { 
            // デフォルトでは、オプションをクリックしても自動的に閉じません
            // close-on-click-action 属性で自動的に閉じるように設定できます
            show.value = false; 
            showToast(item.name); 
        }; 
        return { show, actions, onSelect, }; 
    }, 
};

アイコンの表示

actionsicon フィールドを使用すると、オプションにアイコンを設定でき、オプションがより直感的になります!

js
import { ref } from 'vue'; 
import { showToast } from 'vant'; 
export default {
    setup() { 
        const show = ref(false); 
        const actions = [ { name: 'オプション1', icon: 'cart-o' }, { name: 'オプション2', icon: 'shop-o' }, { name: 'オプション3', icon: 'star-o' }, ]; 
        const onSelect = (item) => { 
            show.value = false; 
            showToast(item.name); 
        }; 
        return { show, actions, onSelect }; 
    };
};

キャンセルボタンの表示

cancel-text 属性を設定すると、下部にキャンセルボタンが表示され、クリックすると現在のパネルが閉じられ、cancel イベントがトリガーされます。

js
import { ref } from 'vue'; 
import { showToast } from 'vant'; 
export default { 
    setup() { 
        const show = ref(false); 
        const actions = [ { name: 'オプション1' }, { name: 'オプション2' }, { name: 'オプション3' }, ]; 
        const onCancel = () => showToast('キャンセル'); 
        return { show, actions, onCancel }; 
    } 
};

説明情報の表示

description を使用すると、メニューの上部に説明情報を表示できます。また、オプションの subname 属性を使用すると、オプションテキストの右側に説明情報を表示できます。

js
import { ref } from 'vue'; 
export default { 
    setup() { 
        const show = ref(false); 
        const actions = [ { name: 'オプション1' }, { name: 'オプション2' }, { name: 'オプション3', subname: '説明情報' }, ]; 
        const onSelect = (item) => { 
            show.value = false; 
            showToast(item.name); 
        }; 
        return { show, actions, onSelect, }; 
    } 
};

オプションの状態

loadingdisabled を使用して、オプションを読み込み状態または無効状態に設定するか、color でオプションの色を設定できます。

js
import { ref } from 'vue'; 
export default { 
    setup() { 
        const show = ref(false); 
        const actions = [ { name: '色付きオプション', color: '#ee0a24' }, { name: '無効オプション', disabled: true }, { name: '読み込み中オプション', loading: true }, ]; 
        const onSelect = (item) => { 
            show.value = false; 
            showToast(item.name); 
        }; 
        return { show, actions, onSelect, }; 
    } 
};

カスタムパネル

スロットを使用してパネルの表示内容をカスタマイズでき、title 属性を使用してタイトルバーを表示できます。

API

Props

パラメータ説明デフォルト値
v-model:showアクションシートを表示するかどうかbooleanfalse
actionsパネルオプションリストActionSheetAction[][]
title上部のタイトルstring-
cancel-textキャンセルボタンのテキストstring-
descriptionオプションの上の説明情報string-
closeable閉じるアイコンを表示するかどうかbooleantrue
close-icon閉じるアイコン名または画像リンク。Icon コンポーネントの name 属性 と同じstringcross
durationアニメーションの期間(秒)。0 に設定するとアニメーションを無効にできますnumber | string0.3
z-indexパネルの z-index レベルを固定値に設定しますnumber | string2000+
round角丸を表示するかどうかbooleantrue
overlayマスクレイヤーを表示するかどうかbooleantrue
overlay-classカスタムマスクレイヤーのクラス名string | Array | object-
overlay-styleカスタムマスクレイヤーのスタイルobject-
lock-scroll背景のスクロールをロックするかどうかbooleantrue
lazy-renderポップアップが表示されたときにのみノードをレンダリングするかどうかbooleantrue
close-on-popstateページが戻るときに自動的に閉じるかどうかbooleantrue
close-on-click-actionオプションをクリックした後に閉じるかどうかbooleanfalse
close-on-click-overlayマスクレイヤーをクリックした後に閉じるかどうかbooleantrue
safe-area-inset-bottom下部安全エリア対応を有効にするかどうかbooleantrue
teleportマウントするノードを指定します。Teleport コンポーネントの to 属性 と同じstring | Element-
before-close閉じる前のコールバック関数。false を返すと閉じるのを阻止できます。Promise の返しもサポートします(action: string) => boolean | Promise<boolean>-

Action データ構造

actions 属性はオブジェクトからなる配列で、配列内の各オブジェクトが1列を設定します。オブジェクトには以下の値を含めることができます:

キー名説明
nameタイトルstring
subnameサブタイトルstring
colorオプションのテキストの色string
icon v4.8.6オプションのアイコン名または画像リンクstring
className対応する列に追加の class を追加するstring | Array | object
loading読み込み状態かどうかboolean
disabled無効状態かどうかboolean
callbackクリック時にトリガーされるコールバック関数action: ActionSheetAction

Events

イベント名説明コールバック引数
selectオプションをクリックしたときにトリガーされます。無効または読み込み状態ではトリガーされませんaction: ActionSheetAction, index: number
cancelキャンセルボタンをクリックしたときにトリガーされます-
openパネルを開くときにトリガーされます-
closeパネルを閉じるときにトリガーされます-
openedパネルを開いてアニメーションが終了した後にトリガーされます-
closedパネルを閉じてアニメーションが終了した後にトリガーされます-
click-overlayマスクレイヤーをクリックしたときにトリガーされますevent: MouseEvent

Slots

名前説明パラメータ
defaultパネルの表示内容をカスタマイズする-
description説明テキストをカスタマイズする-
cancelキャンセルボタンの内容をカスタマイズする-
actionオプションの内容をカスタマイズする{ action: ActionSheetAction, index: number }

型定義

コンポーネントは以下の型定義をエクスポートします:

ts
import type { ActionSheetProps, ActionSheetAction } from 'vant';

テーマカスタマイズ

スタイル変数

コンポーネントはカスタマイズに使用できる以下の CSS 変数を提供します。使用方法については ConfigProvider コンポーネント を参照してください。

名前デフォルト値説明
--van-action-sheet-max-height80%-
--van-action-sheet-header-height48px-
--van-action-sheet-header-font-sizevar(--van-font-size-lg)-
--van-action-sheet-description-colorvar(--van-text-color-2)-
--van-action-sheet-description-font-sizevar(--van-font-size-md)-
--van-action-sheet-description-line-heightvar(--van-line-height-md)-
--van-action-sheet-item-backgroundvar(--van-background-2)-
--van-action-sheet-item-font-sizevar(--van-font-size-lg)-
--van-action-sheet-item-line-heightvar(--van-line-height-lg)-
--van-action-sheet-item-text-colorvar(--van-text-color)-
--van-action-sheet-item-disabled-text-colorvar(--van-text-color-3)-
--van-action-sheet-item-icon-size18px-
--van-action-sheet-item-icon-margin-rightvar(--van-padding-xs)-
--van-action-sheet-subname-colorvar(--van-text-color-2)-
--van-action-sheet-subname-font-sizevar(--van-font-size-sm)-
--van-action-sheet-subname-line-heightvar(--van-line-height-sm)-
--van-action-sheet-close-icon-size22px-
--van-action-sheet-close-icon-colorvar(--van-gray-5)-
--van-action-sheet-close-icon-padding0 var(--van-padding-md)-
--van-action-sheet-cancel-text-colorvar(--van-gray-7)-
--van-action-sheet-cancel-padding-topvar(--van-padding-xs)-
--van-action-sheet-cancel-padding-colorvar(--van-background)-
--van-action-sheet-loading-icon-size22px-

🎉 まとめ

ActionSheet アクションシートはモバイルインタラクションのスターコンポーネントです!エレガントに下部から表示され、ユーザーに明確な選択インターフェイスを提供します。シンプルなオプションリストでも、アイコンや説明のある複雑なパネルでも、ActionSheet は簡単に対応し、アプリのインタラクションをよりスムーズで自然なものにすることができます。

📚 関連コンテンツ

さらに詳しく知りたいですか?以下のコンテンツが役立つかもしれません:

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