Vant3 Stepper步進器

2021-09-07 15:01 更新

介紹

步進器由增加按鈕、減少按鈕和輸入框組成,用于在一定范圍內(nèi)輸入、調(diào)整數(shù)字。

實例演示

引入

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


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

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

代碼演示

基礎(chǔ)用法

通過 v-model 綁定輸入值,可以通過 change 事件監(jiān)聽到輸入值的變化。

<van-stepper v-model="value" />
import { ref } from 'vue';

export default {
  setup() {
    const value = ref(1);
    return { value };
  },
};

步長設(shè)置

通過 step 屬性設(shè)置每次點擊增加或減少按鈕時變化的值,默認為 1。

<van-stepper v-model="value" step="2" />

限制輸入范圍

通過 min 和 max 屬性限制輸入值的范圍。

<van-stepper v-model="value" min="5" max="8" />

限制輸入整數(shù)

設(shè)置 integer 屬性后,輸入框?qū)⑾拗浦荒茌斎胝麛?shù)。

<van-stepper v-model="value" integer />

禁用狀態(tài)

通過設(shè)置 disabled 屬性來禁用步進器,禁用狀態(tài)下無法點擊按鈕或修改輸入框。

<van-stepper v-model="value" disabled />

禁用輸入框

通過設(shè)置 disable-input 屬性來禁用輸入框,此時按鈕仍然可以點擊。

<van-stepper v-model="value" disable-input />

固定小數(shù)位數(shù)

通過設(shè)置 decimal-length 屬性可以保留固定的小數(shù)位數(shù)。

<van-stepper v-model="value" step="0.2" :decimal-length="1" />

自定義大小

通過 input-width 屬性設(shè)置輸入框?qū)挾?,通過 button-size 屬性設(shè)置按鈕大小和輸入框高度。

<van-stepper v-model="value" input-width="40px" button-size="32px" />

異步變更

通過 before-change 屬性可以在輸入值變化前進行校驗和攔截。

<van-stepper v-model="value" :before-change="beforeChange" />
import { ref } from 'vue';
import { Toast } from 'vant';

export default {
  setup() {
    const value = ref(1);

    const beforeChange = (value) => {
      Toast.loading({ forbidClick: true });

      return new Promise((resolve) => {
        setTimeout(() => {
          Toast.clear();
          // 在 resolve 函數(shù)中返回 true 或 false
          resolve(true);
        }, 500);
      });
    };

    return {
      value,
      beforeChange,
    };
  },
};

圓角風(fēng)格

將 theme 設(shè)置為 round 來展示圓角風(fēng)格的步進器。

<van-stepper v-model="value" theme="round" button-size="22" disable-input />

API

Props

參數(shù) 說明 類型 默認值
v-model 當(dāng)前輸入的值 number | string -
min 最小值 number | string 1
max 最大值 number | string -
default-value 初始值,當(dāng) v-model 為空時生效 number | string 1
step 步長,每次點擊時改變的值 number | string 1
name 標(biāo)識符,可以在 change 事件回調(diào)參數(shù)中獲取 number | string -
input-width 輸入框?qū)挾龋J單位為 px number | string 32px
button-size 按鈕大小以及輸入框高度,默認單位為 px number | string 28px
decimal-length 固定顯示的小數(shù)位數(shù) number | string -
theme 樣式風(fēng)格,可選值為 round string -
placeholder 輸入框占位提示文字 string -
integer 是否只允許輸入整數(shù) boolean false
disabled 是否禁用步進器 boolean false
disable-plus 是否禁用增加按鈕 boolean false
disable-minus 是否禁用減少按鈕 boolean false
disable-input 是否禁用輸入框 boolean false
before-change 輸入值變化前的回調(diào)函數(shù),返回 false 可阻止輸入,支持返回 Promise (value: number | string) => boolean | Promise<boolean> false
show-plus 是否顯示增加按鈕 boolean true
show-minus 是否顯示減少按鈕 boolean true
show-input 是否顯示輸入框 boolean true
long-press 是否開啟長按手勢 boolean true
allow-empty 是否允許輸入的值為空 boolean false

Events

事件名 說明 回調(diào)參數(shù)
change 當(dāng)綁定值變化時觸發(fā)的事件 value: string, detail: { name: string }
overlimit 點擊不可用的按鈕時觸發(fā) -
plus 點擊增加按鈕時觸發(fā) -
minus 點擊減少按鈕時觸發(fā) -
focus 輸入框聚焦時觸發(fā) event: Event
blur 輸入框失焦時觸發(fā) event: Event

樣式變量

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

名稱 默認值 描述
--van-stepper-active-color #e8e8e8 -
--van-stepper-background-color var(--van-active-color) -
--van-stepper-button-icon-color var(--van-text-color) -
--van-stepper-button-disabled-color var(--van-background-color) -
--van-stepper-button-disabled-icon-color var(--van-gray-5) -
--van-stepper-button-round-theme-color var(--van-danger-color) -
--van-stepper-input-width 32px -
--van-stepper-input-height 28px -
--van-stepper-input-font-size var(--van-font-size-md) -
--van-stepper-input-line-height normal -
--van-stepper-input-text-color var(--van-text-color) -
--van-stepper-input-disabled-text-color var(--van-gray-5) -
--van-stepper-input-disabled-background-color var(--van-active-color) -
--van-stepper-border-radius var(--van-border-radius-md) -

常見問題

為什么 value 有時候會變成 string 類型?

這是因為用戶輸入過程中可能出現(xiàn)小數(shù)點或空值,比如 1.,這種情況下組件會拋出字符串類型。

如果希望 value 保持 number 類型,可以在 v-model 上添加 number 修飾符:

<van-stepper v-model.number="value" />


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號