Virtualized Select 虚拟化选择器

TIP

这个组件目前在测试当中,如果在使用中发现任何漏洞和问题,请在 GitHub 中提交 issue 以便我们进行处理。

TIP

在 SSR 场景下,您需要将组件包裹在 <client-only></client-only> 之中 (如: Nuxt) 和 SSG (例如: VitePress).

背景

在某些使用情况下,单个选择器可能最终加载数万行数据。 将这么多的数据渲染至 DOM 中可能会给浏览器带来负担,从而造成性能问题。 为了更好的用户和开发者体验,我们决定添加此组件。

基础用法

适用广泛的基础选择器

多选

最基础的多选选择器

隐藏多余标签的多选

默认情况下选中值会以 Tag 的形式展现,你也可以设置collapse-tags属性将它们合并为一段文字。 您可以使用 collapse-tags-tooltip 属性来启用鼠标悬停折叠文字以显示具体所选值的行为。

可过滤的多选

当选项太多时,你可以使用 filterable 选项来启用过滤功能来找到所需的选项。

禁用选择器本身或选项

您可以选择禁用 Select 或者 Select 中的某个选项。

给选项进行分组

只要数据格式满足特定要求,我们就可以按照自己的意愿为选项进行分组。

一键清除

我们可以同时清除所有选定的选项。此设定也适用于单选。

自定义选项的渲染模板

我们也可以通过自定义模板来渲染自己想要的选项内容。

自定义下拉菜单的头部 2.5.2

您可以自定义下拉菜单的头部。

自定义下拉菜单的底部 2.5.2

您可以自定义下拉菜单的底部。

创建临时选项

创建并选中未包含在初始选项中的条目。

通过使用 allow-create 属性,用户可以通过输入框创建新项目。 为了使 allow-create 正常工作, filterable 的值必须为 true

TIP

最好在使用 allow-create 属性的同时设置 :reserve-keyword="false"

远程搜索

输入关键字以从远程服务器中查找数据。

使用 value-key 键属性

options.value 是一个对象时,您应该为它设置一个唯一的标识名称

TIP

2.4.0 之前,value-key既用作所选对象的唯一值,也用作options中表示值的对应 key。 现在 value-key 仅作为所选对象的唯一值使用,选项中值的 key 是 props.value.

自定义选项 2.4.2

当您的 options 格式不同于默认格式 您可以通过 props 属性自定义 options

自定义标签 2.5.0

您可以自定义标签。

自定义加载 2.5.2

修改加载区域内容

空值配置2.7.0

若想配置如空字符串为有效值而不是空值,可以配置 empty-values[null, undefined].

如果您想要将清空值更改为 null, 请设置 value-on-clearnull

自定义标签 2.7.4

您可以自定义标签

API

Attributes

属性名说明类型默认值
model-value / v-model选中项绑定值string / number / boolean / object / array
options选项的数据源, value 的 key 和 label 可以通过 props自定义.array
props 2.4.2配置选项,具体看下表object
multiple是否多选booleanfalse
disabled是否禁用booleanfalse
value-key作为 value 唯一标识的键名,绑定值为对象类型时必填stringvalue
size组件大小enum''
clearable是否可以清空选项booleanfalse
clear-icon自定义清除图标string / objectCircleClose
collapse-tags多选时是否将选中值按文字的形式展示booleanfalse
multiple-limit多选时可被选择的最大数目。 当被设置为0时,可被选择的数目不设限。number0
name选择器的原生name属性string
effecttooltip 主题,内置了 dark / light 两种enum / stringlight
autocomplete自动完成选择输入stringoff
placeholder占位文字stringPlease select
filterable是否可筛选booleanfalse
allow-create是否允许创建新条目, 当使用该属性时,filterable必须设置为truebooleanfalse
filter-method自定义筛选方法Function
loading是否从远程加载数据booleanfalse
loading-text从服务器加载数据时显示的文本,默认为“Loading”string
reserve-keyword筛选时,是否在选择选项后保留关键字booleantrue
no-match-text搜索条件无匹配时显示的文字,也可以使用 empty 插槽设置,默认是 “No matching data'”string
no-data-text当在没有数据时显示的文字,你同时可以使用empty插槽进行设置。stringNo Data
popper-class选择器下拉菜单的自定义类名string''
popper-append-to-body deprecated是否将弹出框插入至 body 元素 当弹出框的位置出现问题时,你可以尝试将该属性设置为false。booleanfalse
teleported是否将下拉列表元素插入 append-to 指向的元素下booleantrue
persistent当下拉选择器未被激活并且persistent设置为false,选择器会被删除。booleantrue
popper-optionspopper.js parametersobjectrefer to popper.js doc{}
automatic-dropdown对于不可搜索的 Select,是否在输入框获得焦点后自动弹出选项菜单booleanfalse
height下拉菜单的高度,每一个选项为34pxnumber274
item-height下拉项的高度number34
scrollbar-always-on是否总是展示滚动条booleanfalse
remote是否从服务器获取数据booleanfalse
remote-method当输入值发生变化时触发的函数。 它的参数就是当前的输入值。 当filterable设置为 true 时才会生效Function
validate-event是否触发表单验证booleantrue
placement下拉框出现的位置enumbottom-start
fallback-placements 2.5.6dropdown 可用的 positions 请查看popper.js 文档array['bottom-start', 'top-start', 'right', 'left']
collapse-tags-tooltip 2.3.0当鼠标悬停于折叠标签的文本时,是否显示所有选中的标签。 只有当 collapse-tags 设置为 true 时才会生效。booleanfalse
max-collapse-tags 2.3.0需要显示的 Tag 的最大数量。 只有当 collapse-tags 设置为 true 时才会生效。number1
tag-type 2.5.0标签类型enuminfo
tag-effect 2.7.7标签效果enumlight
aria-label a11y 2.5.0等价于原生 input aria-label 属性string
empty-values 2.7.0组件的空值配置 参考config-providerarray
value-on-clear 2.7.0清空选项的值 参考 config-providerstring / number / boolean / Function

props

Attribute说明TypeDefault
value指定选项的值为选项对象的某个属性值stringvalue
label指定节点标签为节点对象的某个属性值stringlabel
options指定选项的子选项为选项对象的某个属性值stringoptions
disabled指定选项的禁用为选项对象的某个属性值stringdisabled

事件

插槽名说明类型
change当所选值更改时触发,参数是当前选中的值Function
visible-change当下拉菜单出现/消失时触发器, 当它出现时, 参数将是 true, 否则将是 falseFunction
remove-tag当一个标签在多个模式下被移除时触发,参数将被移除标签值Function
clear可清空的单选模式下用户点击清空按钮时触发Function
blur当选择器的输入框失去焦点时触发Function
focus当选择器的输入框获得焦点时触发Function

Slots

名称详情
default自定义 Option 模板
header 2.5.2下拉列表顶部的内容
footer 2.5.2下拉列表底部的内容
empty自定义当选项为空时的内容
prefix输入框的前缀
tag 2.5.0select 组件自定义标签内容
loading 2.5.2select 组件自定义 loading内容
label 2.7.4select 组件自定义标签内容

Exposes

方法描述类型
focus使选择器的输入框获取焦点Function
blur使选择器的输入框失去焦点,并隐藏下拉框Function

源代码

组件样式文档

贡献者