PickerGroup 选择器组

介绍

用于结合多个 Picker 选择器组件,在一次交互中完成多个值的选择。

PickerGroup 中可以放置以下组件:

引入

通过以下方式来全局注册组件,更多注册方式请参考组件注册

  1. import { createApp } from 'vue';
  2. import { PickerGroup } from 'vant';
  3. const app = createApp();
  4. app.use(PickerGroup);

代码演示

选择日期时间

PickerGroup 的默认插槽中放置一个 DatePicker 组件和一个 TimePicker 组件,可以实现同时选择日期和时间的交互效果。

PickerGroup 会代替子组件来渲染统一的标题栏,这意味着子组件不会渲染单独的标题栏,与标题栏有关的 props 和 events 需要设置到 PickerGroup 上,比如 title 属性、confirm 事件、cancel 事件等,而子组件中与标题栏无关的属性和事件可以正常使用。

  1. <van-picker-group
  2. title="预约日期"
  3. :tabs="['选择日期', '选择时间']"
  4. @confirm="onConfirm"
  5. @cancel="onCancel"
  6. >
  7. <van-date-picker
  8. v-model="currentDate"
  9. :min-date="minDate"
  10. :max-date="maxDate"
  11. />
  12. <van-time-picker v-model="currentTime" />
  13. </van-picker-group>
  1. import { ref } from 'vue';
  2. import { showToast } from 'vant';
  3. export default {
  4. setup() {
  5. const currentDate = ref(['2022', '06', '01']);
  6. const currentTime = ref(['12', '00']);
  7. const onConfirm = () => {
  8. showToast(
  9. `${currentDate.value.join('/')} ${currentTime.value.join(':')}`
  10. );
  11. };
  12. const onCancel = () => {
  13. showToast('cancel');
  14. };
  15. return {
  16. minDate: new Date(2020, 0, 1),
  17. maxDate: new Date(2025, 5, 1),
  18. currentDate,
  19. currentTime,
  20. };
  21. },
  22. };

选择日期范围

PickerGroup 的默认插槽中放置两个 DatePicker 组件,可以实现选择日期范围的交互效果。

  1. <van-picker-group
  2. title="预约日期"
  3. :tabs="['开始日期', '结束日期']"
  4. @confirm="onConfirm"
  5. @cancel="onCancel"
  6. >
  7. <van-date-picker v-model="startEnd" :min-date="minDate" :max-date="maxDate" />
  8. <van-date-picker v-model="endDate" :min-date="minDate" :max-date="maxDate" />
  9. </van-picker-group>
  1. import { ref } from 'vue';
  2. import { showToast } from 'vant';
  3. export default {
  4. setup() {
  5. const startDate = ref(['2022', '06', '01']);
  6. const endDate = ref(['2023', '06', '01']);
  7. const onConfirm = () => {
  8. showToast(`${startDate.value.join('/')} ${endDate.value.join('/')}`);
  9. };
  10. const onCancel = () => {
  11. showToast('cancel');
  12. };
  13. return {
  14. minDate: new Date(2020, 0, 1),
  15. maxDate: new Date(2025, 5, 1),
  16. endDate,
  17. startDate,
  18. };
  19. },
  20. };

选择时间范围

PickerGroup 的默认插槽中放置两个 TimePicker 组件,可以实现选择时间范围的交互效果。

  1. <van-picker-group
  2. title="预约时间"
  3. :tabs="['开始时间', '结束时间']"
  4. @confirm="onConfirm"
  5. @cancel="onCancel"
  6. >
  7. <van-time-picker v-model="startEnd" />
  8. <van-time-picker v-model="endDate" />
  9. </van-picker-group>
  1. import { ref } from 'vue';
  2. import { showToast } from 'vant';
  3. export default {
  4. setup() {
  5. const startTime = ref(['12', '00']);
  6. const endTime = ref(['12', '00']);
  7. const onConfirm = () => {
  8. showToast(`${startTime.value.join(':')} ${endTime.value.join(':')}`);
  9. };
  10. const onCancel = () => {
  11. showToast('cancel');
  12. };
  13. return {
  14. endTime,
  15. startTime,
  16. };
  17. },
  18. };

API

Props

参数说明类型默认值
title顶部栏标题string‘’
confirm-button-text确认按钮文字string确认
cancel-button-text取消按钮文字string取消

Slots

名称说明参数
toolbar自定义整个顶部栏的内容-
title自定义标题内容-
confirm自定义确认按钮内容-
cancel自定义取消按钮内容-

类型定义

组件导出以下类型定义:

  1. import type { PickerGroupProps } from 'vant';

PickerGroup 选择器组 - 图1