1.0.2 • Published 1 month ago

@tanzhenxing/zx-select-v2 v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
1 month ago

zx-select-v2 虚拟化选择器组件

一个适用于UniApp的虚拟化选择器组件,支持H5、小程序和App,可以处理大量数据的选择操作。

特性

  • 支持大数据量渲染(虚拟列表)
  • 支持单选和多选
  • 支持数据过滤
  • 支持选项分组
  • 支持远程搜索
  • 支持禁用选项
  • 支持创建新选项
  • 可自定义标签展示
  • 兼容多端(H5、小程序、App)

安装

# 复制组件到项目中的components目录

使用方法

基础用法

<template>
  <zx-select-v2
    v-model="value"
    :options="options"
    placeholder="请选择"
  />
</template>

<script setup>
import { ref } from 'vue';

const value = ref('');
const options = ref([
  { value: 'option1', label: '选项1' },
  { value: 'option2', label: '选项2' },
  { value: 'option3', label: '选项3' }
]);
</script>

多选模式

<template>
  <zx-select-v2
    v-model="value"
    :options="options"
    multiple
    placeholder="请选择多个选项"
  />
</template>

<script setup>
import { ref } from 'vue';

const value = ref([]);
const options = ref([
  { value: 'option1', label: '选项1' },
  { value: 'option2', label: '选项2' },
  { value: 'option3', label: '选项3' }
]);
</script>

可过滤选择器

<template>
  <zx-select-v2
    v-model="value"
    :options="options"
    filterable
    placeholder="请输入关键词过滤"
  />
</template>

远程搜索

<template>
  <zx-select-v2
    v-model="value"
    :options="options"
    filterable
    remote
    :loading="loading"
    :remote-method="remoteSearch"
    placeholder="请输入关键词搜索"
  />
</template>

<script setup>
import { ref } from 'vue';

const value = ref('');
const options = ref([]);
const loading = ref(false);

const remoteSearch = (query) => {
  if (query) {
    loading.value = true;
    
    // 模拟异步请求
    setTimeout(() => {
      options.value = [/* 搜索结果 */];
      loading.value = false;
    }, 1000);
  } else {
    options.value = [];
  }
};
</script>

API

Props

参数说明类型默认值
modelValue / v-model绑定值String / Number / Boolean / Array-
options选项数据源Array[]
valueKey选项对象中值的属性名String'value'
labelKey选项对象中标签的属性名String'label'
disabledKey选项对象中禁用标志的属性名String'disabled'
multiple是否多选Booleanfalse
disabled是否禁用Booleanfalse
size输入框尺寸String'default'
clearable是否可清空Booleanfalse
placeholder占位文本String'请选择'
filterable是否可搜索Booleanfalse
filterMethod自定义过滤方法Function-
filterPlaceholder搜索框占位文字String'请输入关键词'
remote是否为远程搜索Booleanfalse
remoteMethod远程搜索方法Function-
loading是否正在从远程获取数据Booleanfalse
collapseTags多选时是否折叠TagBooleanfalse
tagColor标签背景色String'#f0f2f5'
listHeight下拉菜单的高度Number300
allowCreate是否允许创建新选项Booleanfalse
groupKey分组数据的属性名String''
groupLabelKey分组标签的属性名String'label'
groupOptionsKey分组选项的属性名String'options'

事件

事件名说明回调参数
change选中值发生变化时触发目前的选中值
visible-change下拉框出现/隐藏时触发出现则为 true,隐藏则为 false
remove-tag多选模式下移除tag时触发移除的tag值
clear可清空的单选模式下用户点击清空按钮时触发-
blur当选择器的输入框失去焦点时触发-
focus当选择器的输入框获得焦点时触发-

插槽

插槽名说明
default自定义选项内容
empty无选项时的内容
header下拉菜单头部内容
footer下拉菜单底部内容
loading加载中的内容

方法

方法名说明参数
focus使选择器的输入框获取焦点-
blur使选择器的输入框失去焦点-

注意事项

  1. 组件使用了Vue 3的Composition API,请确保项目使用Vue 3。
  2. 在小程序环境中,某些特性可能会受到平台限制。
  3. 处理大数据量时,建议使用虚拟滚动(远程搜索)功能来优化性能。