步進器由增加按鈕、減少按鈕和輸入框組成,用于在一定范圍內輸入、調整數字。
通過以下方式來全局注冊組件,更多注冊方式請參考組件注冊。
import { createApp } from 'vue';
import { Stepper } from 'vant';
const app = createApp();
app.use(Stepper);
通過 ?v-model
? 綁定輸入值,可以通過 ?change
? 事件監(jiān)聽到輸入值的變化。
<van-stepper v-model="value" />
import { ref } from 'vue';
export default {
setup() {
const value = ref(1);
return { value };
},
};
通過 ?step
? 屬性設置每次點擊增加或減少按鈕時變化的值,默認為 ?1
?。
<van-stepper v-model="value" step="2" />
通過 ?min
? 和 ?max
? 屬性限制輸入值的范圍,默認超出范圍后會自動校正最大值或最小值,通過 ?auto-fixed
? 可以關閉自動校正。
<van-stepper v-model="value" min="5" max="8" />
設置 ?integer
? 屬性后,輸入框將限制只能輸入整數。
<van-stepper v-model="value" integer />
通過設置 ?disabled
? 屬性來禁用步進器,禁用狀態(tài)下無法點擊按鈕或修改輸入框。
<van-stepper v-model="value" disabled />
通過設置 ?disable-input
? 屬性來禁用輸入框,此時按鈕仍然可以點擊。
<van-stepper v-model="value" disable-input />
通過設置 ?decimal-length
? 屬性可以保留固定的小數位數。
<van-stepper v-model="value" step="0.2" :decimal-length="1" />
通過 ?input-width
? 屬性設置輸入框寬度,通過 ?button-size
? 屬性設置按鈕大小和輸入框高度。
<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 { closeToast, showLoadingToast } from 'vant';
export default {
setup() {
const value = ref(1);
const beforeChange = (value) => {
showLoadingToast({ forbidClick: true });
return new Promise((resolve) => {
setTimeout(() => {
closeToast();
// 在 resolve 函數中返回 true 或 false
resolve(true);
}, 500);
});
};
return {
value,
beforeChange,
};
},
};
將 ?theme
? 設置為 ?round
? 來展示圓角風格的步進器。
<van-stepper v-model="value" theme="round" button-size="22" disable-input />
參數 | 說明 | 類型 | 默認值 |
---|---|---|---|
v-model | 當前輸入的值 | number | string | - |
min | 最小值 | number | string | 1
|
max | 最大值 | number | string | - |
auto-fixed | 是否自動校正超出限制范圍的數值,設置為 false 后輸入超過限制范圍的數值將不會自動校正 |
boolean | true
|
default-value | 初始值,當 v-model 為空時生效 | number | string | 1
|
step | 步長,每次點擊時改變的值 | number | string | 1
|
name | 標識符,通常為一個唯一的字符串或數字,可以在 change 事件回調參數中獲取 |
number | string | - |
input-width | 輸入框寬度,默認單位為 px
|
number | string | 32px
|
button-size | 按鈕大小以及輸入框高度,默認單位為 px
|
number | string | 28px
|
decimal-length | 固定顯示的小數位數 | number | string | - |
theme | 樣式風格,可選值為 round
|
string | - |
placeholder | 輸入框占位提示文字 | string | - |
integer | 是否只允許輸入整數 | boolean | false
|
disabled | 是否禁用步進器 | boolean | false
|
disable-plus | 是否禁用增加按鈕 | boolean | false
|
disable-minus | 是否禁用減少按鈕 | boolean | false
|
disable-input | 是否禁用輸入框 | boolean | false
|
before-change | 輸入值變化前的回調函數,返回 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 | 是否允許輸入的值為空,設置為 true 后允許傳入空字符串 |
boolean | false
|
事件名 | 說明 | 回調參數 |
---|---|---|
change | 當綁定值變化時觸發(fā)的事件 | value: string, detail: { name: string } |
overlimit | 點擊不可用的按鈕時觸發(fā) | - |
plus | 點擊增加按鈕時觸發(fā) | - |
minus | 點擊減少按鈕時觸發(fā) | - |
focus | 輸入框聚焦時觸發(fā) | event: Event |
blur | 輸入框失焦時觸發(fā) | event: Event |
組件導出以下類型定義:
import type { StepperTheme, StepperProps } from 'vant';
組件提供了下列 CSS 變量,可用于自定義樣式,使用方法請參考 ConfigProvider 組件。
名稱 | 默認值 | 描述 |
---|---|---|
--van-stepper-background | var(--van-active-color) | - |
--van-stepper-button-icon-color | var(--van-text-color) | - |
--van-stepper-button-disabled-color | var(--van-background) | - |
--van-stepper-button-disabled-icon-color | var(--van-gray-5) | - |
--van-stepper-button-round-theme-color | var(--van-primary-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-text-color-3) | - |
--van-stepper-input-disabled-background | var(--van-active-color) | - |
--van-stepper-radius | var(--van-radius-md) | - |
這是因為用戶輸入過程中可能出現小數點或空值,比如 ?1.
?,這種情況下組件會拋出字符串類型。
如果希望 value 保持 number 類型,可以在 v-model 上添加 ?number
? 修飾符:
<van-stepper v-model.number="value" />
更多建議: