Vant3 SwipeCell 滑動單元格

2021-09-14 11:51 更新

介紹

可以左右滑動來展示操作按鈕的單元格組件。

實例演示

引入

通過以下方式來全局注冊組件,更多注冊方式請參考組件注冊

import { createApp } from 'vue';
import { SwipeCell } from 'vant';

const app = createApp();
app.use(SwipeCell);

代碼演示

基礎(chǔ)用法

SwipeCell 組件提供了 left 和 right 兩個插槽,用于定義兩側(cè)滑動區(qū)域的內(nèi)容。

<van-swipe-cell>
  <template #left>
    <van-button square type="primary" text="選擇" />
  </template>
  <van-cell :border="false" title="單元格" value="內(nèi)容" />
  <template #right>
    <van-button square type="danger" text="刪除" />
    <van-button square type="primary" text="收藏" />
  </template>
</van-swipe-cell>

自定義內(nèi)容

SwipeCell 可以嵌套任意內(nèi)容,比如嵌套一個商品卡片。

<van-swipe-cell>
  <van-card
    num="2"
    price="2.00"
    desc="描述信息"
    title="商品標(biāo)題"
    class="goods-card"
    thumb="https://img.yzcdn.cn/vant/cat.jpeg"
  />
  <template #right>
    <van-button square text="刪除" type="danger" class="delete-button" />
  </template>
</van-swipe-cell>

<style>
  .goods-card {
    margin: 0;
    background-color: @white;
  }

  .delete-button {
    height: 100%;
  }
</style>

異步關(guān)閉

通過傳入 before-close 回調(diào)函數(shù),可以自定義兩側(cè)滑動內(nèi)容關(guān)閉時的行為。

<van-swipe-cell :before-close="beforeClose">
  <template #left>
    <van-button square type="primary" text="選擇" />
  </template>
  <van-cell :border="false" title="單元格" value="內(nèi)容" />
  <template #right>
    <van-button square type="danger" text="刪除" />
  </template>
</van-swipe-cell>
import { Dialog } from 'vant';

export default {
  setup() {
    // position 為關(guān)閉時點擊的位置
    const beforeClose = ({ position }) => {
      switch (position) {
        case 'left':
        case 'cell':
        case 'outside':
          return true;
        case 'right':
          return new Promise((resolve) => {
            Dialog.confirm({
              title: '確定刪除嗎?',
            }).then(resolve);
          });
      }
    };

    return { beforeClose };
  },
};

API

Props

參數(shù) 說明 類型 默認(rèn)值
name 標(biāo)識符,可以在事件參數(shù)中獲取到 number | string ''
left-width 指定左側(cè)滑動區(qū)域?qū)挾?,單位?nbsp;px number | string auto
right-width 指定右側(cè)滑動區(qū)域?qū)挾龋瑔挝粸?nbsp;px number | string auto
before-close 關(guān)閉前的回調(diào)函數(shù),返回 false 可阻止關(guān)閉,支持返回 Promise (args) => boolean | Promise<boolean> -
disabled 是否禁用滑動 boolean false
stop-propagation 是否阻止滑動事件冒泡 boolean false

Slots

名稱 說明
default 默認(rèn)顯示的內(nèi)容
left 左側(cè)滑動區(qū)域的內(nèi)容
right 右側(cè)滑動區(qū)域的內(nèi)容

Events

事件名 說明 回調(diào)參數(shù)
click 點擊時觸發(fā) position: 'left' | 'right' | 'cell' | 'outside'
open 打開時觸發(fā) { name: string | number, position: 'left' | 'right' }
close 關(guān)閉時觸發(fā) { name: string | number, position: 'left' | 'right' | 'cell' | 'outside' }

beforeClose 參數(shù)

beforeClose 的第一個參數(shù)為對象,對象中包含以下屬性:

參數(shù)名 說明 類型
name 標(biāo)識符 string | number
position 關(guān)閉時的點擊位置 'left' | 'right' | 'cell' | 'outside'

方法

通過 ref 可以獲取到 SwipeCell 實例并調(diào)用實例方法,詳見組件實例方法。

方法名 說明 參數(shù) 返回值
open 打開單元格側(cè)邊欄 position: left | right -
close 收起單元格側(cè)邊欄 - -

類型定義

通過 SwipeCellInstance 獲取 SwipeCell 實例的類型定義。

import { ref } from 'vue';
import type { SwipeCellInstance } from 'vant';

const swipeCellRef = ref<SwipeCellInstance>();

swipeCellRef.value?.close();

樣式變量

組件提供了下列 CSS 變量,可用于自定義樣式,使用方法請參考 ConfigProvider 組件。

名稱 默認(rèn)值 描述
--van-switch-cell-padding-top var(--van-cell-vertical-padding) - 1px -
--van-switch-cell-padding-bottom var(--van-cell-vertical-padding) - 1px -
--van-switch-cell-large-padding-top var(--van-cell-large-vertical-padding) - 1px -
--van-switch-cell-large-padding-bottom var(--van-cell-large-vertical-padding) - 1px -

常見問題

在桌面端無法操作組件?

參見桌面端適配。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號