更新记录

1.0.0(2026-06-30) 下载此版本

1.0.0

  • 支持单列数组、多列二维数组和树形联动数据
  • 支持 v-model 绑定选中值,支持 v-model:show 控制弹层显示
  • 支持自定义字段名:labelKeyvalueKeychildrenKey
  • 支持自定义标题、按钮文字、占位文本、弹层高度和触发器样式
  • 支持 trigger 插槽自定义触发区域

平台兼容性

uni-app(5.07)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - -

una-picker

uni-app 选择器组件,基于 Vue3picker-view 实现,支持单列、多列、联动选择、底部弹出、插槽触发器以及 v-model 双向绑定。

特性

  • 支持单列数组、多列二维数组和树形联动数据
  • 支持 v-model 绑定选中值,支持 v-model:show 控制弹层显示
  • 支持自定义字段名:labelKeyvalueKeychildrenKey
  • 支持自定义标题、按钮文字、占位文本、弹层高度和触发器样式
  • 支持 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 }

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议