更新记录

0.3.0(2026-09-04) 下载此版本

  • 微信小程序端(MP-WEIXIN)改用微信系统弹层 picker,贴合微信原生 UI:单列映射 selector、多列 / 联动映射 multiSelectorcolumnchange 实时重建后续列),滚动吸附后点「确定」回调,值即最终值,消除此前 picker-view 的 change 延迟与确认拦截问题
  • 微信端限制:系统弹层 UI 不可定制(confirm-text / cancel-text / confirm-color / z-index / safe-area-inset-bottom 等弹层定制 props 不生效;title 仅微信安卓端显示);v-model:show 程序化打开不生效(点击触发条弹出,show-trigger=false 时微信端仍渲染触发条作为触发区域);暗黑模式跟随微信宿主深色主题(需小程序开启 darkmode)
  • 仅影响微信小程序端;Android / iOS / 鸿蒙 / Web 行为不变(仍为自建弹层 + picker-view / iOS 自研滚轮)

0.2.1(2026-08-24) 下载此版本

  • 触发条清除按钮样式对齐 nax-input:移除灰色圆形底徽,改为纯 close 图标;图标随 size 缩放(sm 14 / md 16 / lg 18),配色与热区内边距一致;App 深色主题沿用 custom-class nax-theme-dark 判定字面量色(APP-ANDROID / APP-IOS / APP-HARMONY),其它端浅色默认不变
  • 有选中值显示清除按钮时隐藏下拉箭头,二者互斥且切换位置精确重合(箭头容器补齐相同热区内边距、图标同尺寸)
  • readme 同步修正清除按钮与箭头互斥的描述

0.2.0(2026-08-20) 下载此版本

  • 新增 v-model / modelValue 选中值绑定:单列回写单项 value,多列 / 联动回写 value 数组
  • 内置触发条新增 clearable(默认 true):有选中值时在下箭头左侧显示清除按钮,点击后清空选中、回写空的 v-model,并触发 clear
  • 修复鸿蒙端:清空触发条选中值后,点击事件冒泡导致底部选择框重新弹出;增加触发条入口抑制并清理异步 picker-view 回调(APP-HARMONY)。
查看更多

平台兼容性

uni-app x(4.25)

Chrome Safari Android iOS 鸿蒙 微信小程序

其他

多语言 暗黑模式 宽屏模式
× ×

nax-select

uni-app x 列选择器(底部弹层 + picker-view),功能覆盖常用场景。

依赖

  • nax-icon(触发条箭头)
  • nax-transition(弹层进退场动画)
  • nax-ui-theme(CSS 变量 --nax-*,安装时依赖 / 运行时弱依赖)

组件特性

nax-select
弹层绑定 v-model:show(布尔)控制显隐
选中值绑定 v-model:单列为单项 value,多列 / 联动为 value 数组;内置触发条据此回显
mode 拼写 推荐 multi-column / multi-column-auto,兼容历史 mutil-* 拼写
安全区 safe-area-inset-bottom 默认 true
触发条 可选 show-trigger,表单页可少写一层 Cell/Button
事件 额外 change / open / close
遮罩关闭 mask-closable(兼容 mask-close-able

基础用法

<nax-button label="打开选择" @click="visible = true"></nax-button>
<nax-select
  v-model:show="visible"
  :list="list"
  title="请选择"
  @confirm="onConfirm"
></nax-select>
const visible = ref(false)
const list = [
  { value: '1', label: '雪月夜' },
  { value: '2', label: '冷夜雨' }
]

function onConfirm(items: UTSJSONObject[]) {
  // items[i].value / .label / .index
}

内置触发条

v-model 绑定选中值后,触发条会按 list 对应项的 label 回显;未绑定时仍显示 placeholder。有选中值时,右侧显示清除按钮并隐藏下拉箭头(clearable,默认开启,二者互斥),点击后清空选中并回写空的 v-model

<nax-select
  v-model="city"
  v-model:show="visible"
  show-trigger
  placeholder="请选择城市"
  :list="list"
  @confirm="onConfirm"
></nax-select>
const city = ref('1')
const visible = ref(false)

多列 / 联动把 v-model 绑成数组:

<nax-select
  v-model="region"
  v-model:show="visible"
  show-trigger
  mode="multi-column-auto"
  :list="regionList"
  placeholder="省 / 市 / 区"
></nax-select>
const region = ref(['zhejiang', 'hangzhou', 'xihu'] as string[])

模式 mode

说明 list 形态
single-column 单列(默认) [{ value, label }]
multi-column 多列独立 [[col1...], [col2...]]
multi-column-auto 多列联动 树形,子级字段默认 children

兼容:mutil-column / mutil-column-auto / cascade

常用 Props

属性 类型 默认 说明
show boolean false v-model:show 显隐;微信小程序端不生效(点触发条弹出,自动回写 false)
modelValue string / number / boolean / array '' v-model 选中值;单列单项,多列/联动为 value 数组
list array [] 列数据
mode string single-column 见上表
default-value number[] [] 默认选中下标
title string '' 弹层标题;微信小程序端仅安卓显示为系统弹层标题
confirm-text / cancel-text string 确认 / 取消 按钮文案;微信小程序端不生效(系统弹层固定文案)
value-name / label-name string value / label 字段名
child-name string children 联动子级字段
mask-closable boolean true 点遮罩关闭;微信小程序端不生效(系统弹层自带遮罩)
safe-area-inset-bottom boolean true 底部安全区;微信小程序端不生效
preserve-selection boolean true 保留上次确认下标
show-trigger boolean false 内置触发条;微信小程序端始终渲染触发条作为弹层触发区域
clearable boolean true 触发条有选中值时显示清除按钮
placeholder string 请选择 触发条占位
disabled boolean false 触发条禁用
separator string / 多列展示分隔
z-index number 10075 层级;微信小程序端不生效
size string md 触发条 sm/md/lg
border boolean true 触发条描边
custom-class string '' 根扩展 class

事件

事件 说明
update:show 显隐
update:modelValue 确认后回写选中值(单列单项 / 多列数组);清除时回写空值
confirm 确认,回调选中项数组
cancel 取消或遮罩关闭
clear 点击触发条清除按钮
change 滚轮变化
open / close 打开 / 关闭

确认项字段:valuelabelindex,若源数据有 extra 则带回。

插槽

名称 说明
trigger 自定义触发区域(需 show-trigger

主题

通过 CSS 变量覆盖:

Token 用途
--nax-border-width 边框粗细
--nax-color-bg 背景色
--nax-color-bg-hover 按压/悬停背景色
--nax-color-border 边框色
--nax-color-divider 分割线色
--nax-color-mask 遮罩色
--nax-color-primary 主题主色
--nax-color-text 主文字色
--nax-color-text-black 纯黑文字色
--nax-color-text-disabled 禁用文字色
--nax-color-text-placeholder 占位文字色
--nax-color-text-secondary 次要文字色

平台说明

  • iOS:自研滚轮(原生 picker-view 列文字无法垂直居中),滚动停止吸附对齐选中行,支持点选。
  • Android / 鸿蒙 / Web:自建弹层 + 原生 picker-view 滚轮。
  • 微信小程序:使用微信系统弹层 pickerselector / multiSelector),贴合微信原生 UI:
    • 滚动吸附后点「确定」回调,值即最终值,无 change 延迟与确认拦截问题
    • 系统弹层 UI 不可定制:confirm-text / cancel-text / confirm-color / z-index / safe-area-inset-bottom 等弹层定制 props 在微信端不生效;title 仅微信安卓端显示为弹层标题
    • v-model:show 程序化打开在微信端不生效,请点击触发条弹出(show-trigger=false 时微信端仍会渲染触发条作为触发区域)
    • 暗黑模式:跟随微信宿主深色主题,弹层自动适配(需小程序开启 darkmode)
  • 鸿蒙:原生滚轮;已禁用选项点选(点击被吞掉),请滑动选择后点「确认」。
  • 鸿蒙暗黑模式:组件自动移除原生滚轮默认的白色渐变遮罩。
  • 联动最多 4 列。

隐私、权限声明

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

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

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

许可协议

MIT协议

暂无用户评论。