🚀 告别索引地狱!nx-picker 让你的 Uniapp 选择器重获新生

373 阅读2分钟

🔍 官方 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 👈