antdvue select组件选项太多时,首次选择非常卡顿,影响使用;
封装的select组件都默认打开了show-search属性
这里使用了@search方法
//定义搜索值
const selectKey = ref('')
//函数
function selectKeyChange(key) {
selectKey.value = key
}
<Select
v-model:value="formData[item.labelName]"
:placeholder="item.placeholder"
show-search
:filter-option="filterOption"
option-filter-prop="titles"
size="middle"
:mode="item.mode || ''"
:disabled="item.readOnly || item.unedit || false"
:dropdown-menu-style="{ color: '#ff0000', background: '#ff0000' }"
:dropdown-match-select-width="false"
@select="selectChange(item, formData[item.labelName])"
@search="selectKeyChange"
>
<SelectOption
v-for="items in item.selectList.filter((ele) => {
if (item.selectList.length < 100){
return true;
}
else if (!selectKey)
return false;
return ele.title.includes(selectKey)
})"
:key="items.value"
:value="items.value"
:titles="items.title"
:disabled="items.disabled"
>
<span :titles="items.title">{{ items.label }}</span>
</SelectOption>
</Select>
1.默认100条以内不过滤选项;
2.如果搜索值selectKey为空,待选项为空
3.匹配了搜索值再出现选项
缺点:量大的时候默认无选项