更新记录
V2.0.0(2025-08-13)
新增了多选,修复搜索时下拉选项重叠错位的问题
平台兼容性
uni-app(4.07)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.07)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| × | × | √ |
README ‑ laybot-selects
支持单选、多选、本地搜索、虚拟滚动的下拉选择组件(uni-modules 版)
一、安装
HBuilderX 3.6+
- 打开“插件市场”→ 搜索“laybot-selects”→ 一键导入
(自动落到uni_modules/laybot-selects/…)
npm / cli
# 在项目根目录
npm i laybot-selects-uniapp --save
# or
pnpm add laybot-selects-uniapp
安装后确保目录结构为
uni_modules/
└─ laybot-selects/
└─ components/laybot-selects/laybot-selects.vue
二、快速上手
<template>
<view class="demo">
<!-- 单选(默认) -->
<laybot-selects
v-model="city"
:list="cityList"
placeholder="请选择城市" />
<!-- 多选 + 本地过滤 -->
<laybot-selects
v-model="hobby"
multiple
enable-local-filter
:list="hobbyList"
placeholder="选择爱好"
@confirm="handleConfirm" />
</view>
</template>
<script setup>
import larrySelects from '@/uni_modules/laybot-selects/components/laybot-selects/laybot-selects.vue'
const city = ref('')
const hobby = ref([])
const cityList = [
{ value: 'bj', label: '北京' },
{ value: 'sh', label: '上海' },
// …
]
const hobbyList = [
{ value: 1, label: '篮球' },
{ value: 2, label: '跑步' },
{ value: 3, label: '旅游' },
]
const handleConfirm = list => {
console.log('选择结果', list)
}
</script>
三、Props
| 参数 | 说明 | 类型 / 默认 |
|---|---|---|
| modelValue / v-model | 绑定的值(单选:字符串/数字,多选:数组) | — |
| list | 选项数组 | Array\<{ value,label,… }> |
| valueKey | value 字段名 | String 'value' |
| labelKey | label 字段名 | String 'label' |
| multiple | 开启多选 | Boolean false |
| showSearch | 是否显示搜索框 | Boolean true |
| enableLocalFilter | 组件内部用 includes 做本地过滤 |
Boolean false |
| showSearchBtn | 搜索按钮模式(自行触发 @search) | Boolean false |
| placeholder | 输入框占位符 | String |
| searchPlaceholder | 搜索框占位符 | String |
| selectColor | 勾选时图标颜色 | String #0081ff |
| disabled | 禁用 | Boolean |
| height | 外部输入框高度,例如 '38px' |
String |
| textAlign | 外部输入框文字对齐 'left'/'center' |
String |
更多样式相关 prop 参见 component.json 注释。
四、Events
| 事件名 | 触发时机 | 回调参数 |
|---|---|---|
| update:modelValue | 选中 / 取消选中 / 重置 / 确认 | 新 value |
| change | 单选时每次点击即关闭并触发 | 选中 item |
| confirm | 多选点击“确定” | 选中 item 数组 |
| search | 输入框内容变化 / 点击搜索按钮 | 关键词 |
| openDeepScroll | 弹窗打开 | — |
| closeDeepScroll | 弹窗关闭 | — |
五、Slots
暂无。所有可定制项均通过 props 样式或覆盖 CSS 变量实现。
六、样式定制
组件内部使用 SCSS 变量,可全局覆盖:
$primary : #0081ff; // 选中主色
$text : #333333; // 文本色
$border : #e6e6e6; // 描边色
在项目 uni.scss / App.vue 顶部重新声明同名变量即可。
另外,可通过 inputStyle prop 精准传入外部输入框样式,
如 :input-style="{ background:'#fafafa',border:'1px solid #eee' }"。
七、API & 方法
组件无公开实例方法,所有交互通过 props 与事件完成。
若需主动清空,可在父组件直接修改 v-model 绑定值为 '' 或 []。
八、常见问题
Q1. 列表数据很多会卡吗?
A:内部使用虚拟滚动(仅渲染可视区),测试 5,000 条依旧流畅。
Q2. 如何实现远程搜索?
A:把 enable-local-filter 设为 false,监听 @search,
在回调里发请求 → 更新 list 即可。
Q3. v-model 需要数组还是字符串?
A:multiple=false → 字符串/数字;multiple → 数组。
九、更新日志
详见 uni_modules/laybot-selects/changelog.md
十、许可证
MIT © 2025 Larry

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 34
赞赏 0
下载 10957206
赞赏 1800
赞赏
京公网安备:11010802035340号