更新记录
1.1.0(2025-07-14)
下载此版本
1.0.1(2025-01-13)
下载此版本
优化说明文挡
1.0.0(2025-01-13)
下载此版本
新增组件
查看更多
平台兼容性
uni-app
Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
√ |
√ |
- |
- |
- |
- |
- |
- |
- |
微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
快应用-华为 |
快应用-联盟 |
√ |
- |
√ |
- |
√ |
- |
- |
√ |
- |
- |
- |
hbxw-selector 选择器组件
介绍
选择器组件,可以实现单选/多选的选择器组件,支持自定义图标、底部操作区域和关闭按钮。
使用示例
基础用法
推荐先直接复制示例代码到工程中看效果了解下使用方法再投入项目使用。
<template>
<view>
<button @click="selectfn(0)">单选</button>
<button @click="selectfn(1)">多选</button>
<button @click="selectfn(2)">slot示例</button>
<hbxw-selector
v-model:isShow="isShowSlector0"
@picker="picker"
:options="options"
@confirm="confirm0"
></hbxw-selector>
<hbxw-selector
v-model:isShow="isShowSlector1"
:isMultiple="true"
:isAni="false"
@picker="picker"
@confirm="confirm1"
:options="options"
></hbxw-selector>
<hbxw-selector
v-model:isShow="isShowSlector2"
:options="reasonOptions"
title="请选择售后原因"
sub-title="售后原因副标题"
>
<template #close>
<view class="close-icon" mode="aspectFill">✕</view>
</template>
<template #footer="{ result }">
<view class="footer-container">
<view @click="confirm2(result)" class="confirm-btn">
确定
</view>
</view>
</template>
</hbxw-selector>
</view>
</template>
<script>
const SELECT_OPTIONS = [
{
label: '7天无理由退款',
value: 1
},
{
label: '太贵了',
value: 2
},
{
label: '设备有问题',
value: 3
},
{
label: '不喜欢',
value: 4
},
{
label: '换货',
value: 5
},
{
label: '不想要了',
value: 6
},
{
label: '换型号',
value: 7
},
{
label: '体验流程',
value: 8
},
{
label: '其他',
value: 9
}
]
export default {
data() {
return {
options: SELECT_OPTIONS,
reasonOptions: SELECT_OPTIONS,
isShowSlector0: false,
isShowSlector1: false,
isShowSlector2: false
}
},
methods: {
picker(res) {
console.log('---- picker ----:', res);
},
confirm(res) {
console.log('---- confirm ----:', res);
},
selectfn(index) {
this['isShowSlector'+index] = true;
},
confirm0(result) {
console.log('---- confirm0 ----:', result);
this.isShowSlector0 = false;
},
confirm1(result) {
console.log('---- confirm1 ----:', result);
this.isShowSlector1 = false;
},
confirm2(result) {
console.log('---- confirm2 ----:', result);
this.isShowSlector2 = false;
}
}
}
</script>
<style>
.close-icon {
width: 44rpx;
height: 44rpx;
}
.select-icon {
width: 30rpx;
height: 30rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
background: linear-gradient(to right, #C246EF, #6666EA);
border-radius: 50%;
}
.select-iconin {
color: white;
}
.select-icon-default {
width: 30rpx;
height: 30rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
box-sizing: border-box;
background-color: white;
border-width: 1px;
border-style: solid;
border-color: #D2CBD4;
border-radius: 50%;
}
.footer-container {
width: 750rpx;
height: 160rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
background-color: white;
box-shadow: 0px -12px 20px 0px rgba(203,203,207,0.35);
}
.confirm-btn {
width: 694rpx;
height: 100rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
background: linear-gradient(to right, #B34EE7, #6666E2);
border-radius: 50rpx;
font-size: 28rpx;
color: white;
}
</style>
API
Props
属性名 |
类型 |
默认值 |
必填 |
说明 |
options |
Array |
[] |
是 |
待选择数据,数据结构如上示例 |
label |
String |
'label' |
否 |
标准结构如上示例,但如果你想自定义label的key,可以配置此值 |
value |
String |
'value' |
否 |
标准结构如上示例,但如果你想自定义value的key,可以配置此值 |
isShow |
Boolean |
false |
是 |
选择器组件显示与隐藏 |
title |
String |
'请选择' |
否 |
选择器主标题 |
subTitle |
String |
'选择您要选择的选项' |
否 |
选择器副标题 |
isMultiple |
Boolean |
false |
否 |
是否支持多选 |
isMaskClick |
Boolean |
true |
否 |
是否点击遮罩可关闭 |
maskOpacity |
Number |
0.75 |
否 |
遮罩透明度配置0-1 |
zIndex |
Number |
9999 |
否 |
选择器层级 |
isAni |
Boolean |
true |
否 |
选择器是否需要打开关闭动效 |
selectIcon |
String |
默认图标 |
否 |
自定义选中状态图标路径 |
isShowFooter |
Boolean |
true |
否 |
是否显示底部确认区域 |
Events
事件名 |
说明 |
返回值 |
picker |
选择器状态变化触发的事件 |
返回当前选择的结果,{selectIndexs:[1], selectOptions:[{label: '7天无理由退款', value: 1 }]} |
confirm |
点击确认按钮触发的事件 |
返回当前选择的结果,格式同picker事件 |
open |
选择器打开触发的事件 |
无 |
close |
选择器关闭触发的事件 |
无 |
Slots
插槽名 |
说明 |
作用域参数 |
close |
自定义关闭按钮 |
无 |
footer |
自定义底部操作区域 |
{ result } - 当前选择结果 |
特性
- 🚀 高性能:优化渲染逻辑,避免微信小程序插槽冲突问题
- 🎨 可定制:支持自定义图标、底部操作区域、关闭按钮
- 📱 多端兼容:完美兼容微信小程序、H5、App等平台
- ✨ 动画效果:支持开关动画,提升用户体验
- 🔧 灵活配置:支持单选/多选、遮罩点击关闭等多种配置
注意事项
- 组件已经尽力向外暴露了一些自定义属性,但是面对形形色色的需求,如果通过已经暴露的配置我们无法满足需求,我们可以通过样式穿透去自定义UI,最暴力的是直接复制整个代码到自己的项目,完全自定义一个适合自已需求的
- 包体积偏大是因为有示例图片,真正会打包到项目中的体积是很小的