更新记录
1.0.0(2026-06-30)
下载此版本
1.0.0
- 支持单列数组、多列二维数组和树形联动数据
- 支持
v-model 绑定选中值,支持 v-model:show 控制弹层显示
- 支持自定义字段名:
labelKey、valueKey、childrenKey
- 支持自定义标题、按钮文字、占位文本、弹层高度和触发器样式
- 支持
trigger 插槽自定义触发区域
平台兼容性
uni-app(5.07)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| - |
√ |
- |
- |
- |
- |
- |
- |
- |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
√ |
- |
√ |
√ |
√ |
- |
- |
- |
√ |
- |
- |
una-picker
uni-app 选择器组件,基于 Vue3 和 picker-view 实现,支持单列、多列、联动选择、底部弹出、插槽触发器以及 v-model 双向绑定。
特性
- 支持单列数组、多列二维数组和树形联动数据
- 支持
v-model 绑定选中值,支持 v-model:show 控制弹层显示
- 支持自定义字段名:
labelKey、valueKey、childrenKey
- 支持自定义标题、按钮文字、占位文本、弹层高度和触发器样式
- 支持
trigger 插槽自定义触发区域
基础用法
<template>
<view>
<una-picker
v-model="city"
title="选择城市"
:columns="cityColumns"
@confirm="handleConfirm"
/>
<una-picker
v-model="area"
:cascade="true"
title="选择地区"
:columns="areaColumns"
/>
</view>
</template>
<script setup>
import { ref } from "vue";
const city = ref("");
const area = ref([]);
const cityColumns = [
{ label: "杭州", value: "hangzhou" },
{ label: "上海", value: "shanghai" },
{ label: "深圳", value: "shenzhen" }
];
const areaColumns = [
{
label: "浙江",
value: "zhejiang",
children: [
{ label: "杭州", value: "hangzhou" },
{ label: "宁波", value: "ningbo" }
]
},
{
label: "广东",
value: "guangdong",
children: [
{ label: "广州", value: "guangzhou" },
{ label: "深圳", value: "shenzhen" }
]
}
];
function handleConfirm(event) {
console.log(event.value, event.options);
}
</script>
自定义颜色
<template>
<view>
<una-picker
v-model="fruit"
title="选择水果"
placeholder="请选择水果"
:columns="fruitColumns"
backgroundColor="#FFF5F5"
borderRadius="24rpx 24rpx 0 0"
color="#7A1F24"
selectedColor="#FF4D4F"
cancelColor="#B25A5F"
confirmColor="#FF4D4F"
/>
</view>
</template>
<script setup>
import { ref } from "vue";
const fruit = ref("");
const fruitColumns = [
{ label: "苹果", value: "apple" },
{ label: "草莓", value: "strawberry" },
{ label: "樱桃", value: "cherry" }
];
</script>
Props
| 参数 |
说明 |
类型 |
默认值 |
| modelValue |
当前选中值,单列为单个值,多列/联动为数组 |
String / Number / Array |
'' |
| show |
是否显示弹层,支持 v-model:show |
Boolean |
false |
| columns |
选项数据,支持一维数组、二维数组、树形数组 |
Array |
[] |
| title |
顶部标题 |
String |
请选择 |
| placeholder |
未选择时的占位文本 |
String |
请选择 |
| confirmText |
确认按钮文字 |
String |
确定 |
| cancelText |
取消按钮文字 |
String |
取消 |
| labelKey |
选项显示字段名 |
String |
label |
| valueKey |
选项取值字段名 |
String |
value |
| childrenKey |
联动子级字段名 |
String |
children |
| cascade |
是否启用联动模式 |
Boolean |
false |
| separator |
多列显示文本分隔符 |
String |
/ |
| height |
弹层高度 |
String / Number |
520rpx |
| itemHeight |
选项高度 |
String / Number |
88rpx |
| fieldHeight |
默认触发器高度 |
String / Number |
88rpx |
| fieldPadding |
默认触发器内边距 |
String / Number |
0 28rpx |
| backgroundColor |
弹层背景色 |
String |
#FFFFFF |
| color |
未选中选项文字颜色 |
String |
#323233 |
| selectedColor |
选中选项文字颜色 |
String |
#323233 |
| cancelColor |
取消按钮文字颜色 |
String |
#969799 |
| confirmColor |
确认按钮文字颜色 |
String |
#2979ff |
| borderRadius |
弹层圆角 |
String / Number |
24rpx 24rpx 0 0 |
| disabled |
是否禁用 |
Boolean |
false |
| closeOnClickOverlay |
点击遮罩是否关闭 |
Boolean |
true |
Events
| 事件名 |
说明 |
回调参数 |
| change |
滚动选择时触发 |
{ values, indexes, options } |
| confirm |
点击确认时触发 |
{ value, values, indexes, options } |
| cancel |
点击取消或遮罩关闭时触发 |
- |
| open |
打开弹层时触发 |
- |
| close |
关闭弹层时触发 |
- |
插槽
trigger:自定义触发区域,插槽参数为 { text, value }