更新记录
1.0.0(2026-01-29)
下载此版本
平台兼容性
uni-app(3.6.15)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
x-select 下拉选择器
类似 Ant Design Vue 的下拉选择器组件,支持无限滚动分页加载。
功能特性
- 📦 基础选择:支持自定义 value 和 label 字段。
- 📜 滚动分页:支持
scrolltolower 事件,轻松实现无限滚动加载。
- 🚫 禁用状态:支持整体禁用和单个选项禁用。
- 🎨 Ant Design 风格:简约、现代的 UI 设计。
引入组件
import xSelect from '@/components/x-select/x-select.vue';
export default {
components: {
xSelect
}
}
代码演示
基础用法
<x-select
v-model="value"
:options="options"
placeholder="请选择"
></x-select>
data() {
return {
value: '',
options: [
{ label: '选项1', value: 1 },
{ label: '选项2', value: 2 }
]
}
}
滚动分页加载
监听 load-more 事件,在回调中请求下一页数据并追加到 options 数组中。
<x-select
v-model="value"
:options="options"
:loading="loading"
:hasMore="hasMore"
placeholder="滚动加载更多"
@load-more="handleLoadMore"
></x-select>
methods: {
handleLoadMore() {
if (this.loading || !this.hasMore) return;
this.loading = true;
// 模拟异步请求
setTimeout(() => {
const newItems = [...]; // 获取新数据
this.options = [...this.options, ...newItems]; // 追加数据
this.loading = false;
if (noMoreData) {
this.hasMore = false;
}
}, 1000);
}
}
API
Props
| 参数 |
说明 |
类型 |
默认值 |
| value / v-model |
指定当前选中的条目 |
String | Number | Object |
- |
| options |
选项数据,默认 label 和 value 属性,可通过 labelKey/valueKey 修改 |
Array |
[] |
| placeholder |
选择框默认文字 |
String |
'请选择' |
| disabled |
是否禁用 |
Boolean |
false |
| loading |
是否处于加载中状态 |
Boolean |
false |
| hasMore |
是否还有更多数据(控制底部加载提示) |
Boolean |
false |
| labelKey |
选项中显示文本的字段名 |
String |
'label' |
| valueKey |
选项中值对应的字段名 |
String |
'value' |
Events
| 事件名称 |
说明 |
回调参数 |
| change |
选中项变化时触发 |
function(option: Object) |
| load-more |
下拉列表滚动到底部时触发 |
- |
Slots
| 插槽名称 |
说明 |
| trigger |
自定义触发器内容,替换默认的输入框样式 |
| option |
自定义选项内容,参数:{ item, index } |