🔍 官方 picker 的痛点你中了几条?
- 索引绑定地狱:官方 picker 只能绑定索引值,每次都要写额外的逻辑获取真实数据
- 对象数据崩溃:无法直接关联数组对象中的 value 值,需要手动映射转换
- 双向绑定失踪:缺少
v-model支持,需要自己处理状态同步 - 代码冗余:每次使用都要重复编写值映射逻辑
如果以上至少一条让你膝盖中箭,那么 nx-picker 就是你的救星!
✨ nx-picker 的四大超能力
1. 真正的双向数据绑定
<nx-picker v-model="currentType"
:range="typeList"
range-key="label"
range-value="value">
</nx-picker>
一个 v-model 直接搞定数据绑定,告别手动同步的烦恼!
2. 对象值直通车 🚄
typeList: [
{ value: 1, label: 'VIP会员' },
{ value: 2, label: '黄金会员' }
]
range-value 属性让你直接绑定对象中的 value 值,索引映射?不存在的!
3. 内置索引计算器
getIndex(val) {
let index = 0
this.range.some((item, i) => {
if(item[this.rangeValue] === val) {
index = i
}
return item[this.rangeValue] === val
})
return index
}
内部自动处理索引与真实值的映射关系,你只需要关心业务数据!
🧪 实战对比:官方 vs nx-picker
官方 picker 写法(心累版)
// 模板
<picker :value="index" @change="onChange">
<view>当前选择:{{typeList[index].label}}</view>
</picker>
// 脚本
onChange(e) {
this.index = e.detail.value
const realValue = this.typeList[this.index].value
// 还要额外处理realValue...
}
nx-picker 写法(爽快版)
<nx-picker v-model="currentType"
:range="typeList"
range-key="label"
range-value="value"
@change="console.log(currentType)">
</nx-picker>
直接使用 v-model 绑定真实值,change 事件直接获取最终数据!
💡 支持自定义显示样式
<!-- 自定义选择器样式 -->
<nx-picker v-model="currentType"
activeColor="#ff0000"
:stroke-width="15">
<template #label>
<text style="color:blue;">{{ label }}</text>
</template>
</nx-picker>
🌈 结语
nx-picker 就像给官方 picker 装上了涡轮增压:
- 省去 50% 的索引映射代码
- 减少 80% 的值转换错误
- 提升 100% 的开发愉悦度
还在和索引较劲?是时候升级你的选择器体验了!
👉 立即体验 nx-picker 👈