Vant 4中的van-picker选择总是第一个的解决办法

Vant 4中的van-picker选择总是第一个的解决办法

官方demo

javascript 复制代码
<van-field
  v-model="fieldValue"
  is-link
  readonly
  label="城市"
  placeholder="选择城市"
  @click="showPicker = true"
/>
<van-popup v-model:show="showPicker" round position="bottom">
  <van-picker
    :columns="columns"
    @cancel="showPicker = false"
    @confirm="onConfirm"
  />
</van-popup>
import { ref } from 'vue';

export default {
  setup() {
    const columns = [
      { text: '杭州', value: 'Hangzhou' },
      { text: '宁波', value: 'Ningbo' },
      { text: '温州', value: 'Wenzhou' },
      { text: '绍兴', value: 'Shaoxing' },
      { text: '湖州', value: 'Huzhou' },
    ];
    const fieldValue = ref('');
    const showPicker = ref(false);

    const onConfirm = ({ selectedOptions }) => {
      showPicker.value = false;
      fieldValue.value = selectedOptions[0].text;
    };

    return {
      columns,
      onConfirm,
      fieldValue,
      showPicker,
    };
  },
};

渲染出来的结果是这样的

这个使用起来是没啥问题的

他默认是渲染text,但是一般在我们使用中99%的数据渲染都不可能是text,这个时候就可以使用文档中的columns-field-names来自定义自定义 columns 结构中的字段,比如我们的数据里面现在是name为需要渲染的字段就可以这么写

javascript 复制代码
<van-picker
        :columns-field-names="{ text: 'name'}"
        :columns="columns"
        @cancel="showPicker = false"
        @confirm="onConfirm"
      >
</van-picker>

但是这个时候就会发现一个问题,就是不管你怎么选择都是第一个选项,因为我也是个前端小白,找了蛮久都没找到解决办法,后来试了一下自定义value居然可以,所以就可以写成

javascript 复制代码
:columns-field-names="{ text: 'name', value: 'name' }"

这样就可以了,也不知道为啥,看不懂源码

为啥一开始不自定义value,因为我想获取的是选择的这个对象,不是这个对象里面的某个属性

相关推荐
他们叫我秃子几秒前
前端开发转 Go 全栈(三):从函数到 error,Go 连“失败”都要明确返回
前端·后端·go
Canace10 分钟前
GPT-5.6 到底怎么选?一文搞懂 Sol、Terra、Luna 和 Ultra
前端·人工智能·chatgpt
用户0595401744613 分钟前
LangChain Memory 踩坑实录:10种异常场景差点搞崩生产,我们写了一套自动化测试保命
前端·css
名字还没想好☜16 分钟前
React useImperativeHandle 实战:让父组件安全地调用子组件的方法
前端·javascript·react.js·react·forwardref
CodeSheep17 分钟前
FFmpeg 9.0正式发布:代号“Lei”,以纪念中国开发者雷霄骅
前端·后端·程序员
三流架构师18 分钟前
产品经理资料合集
经验分享
IT_陈寒19 分钟前
小心!Java里的这个空指针问题绝对坑过你
前端·人工智能·后端
Canace20 分钟前
AI 都能操作浏览器了,却读不了微信公众号文章
前端·人工智能·产品
铁皮饭盒23 分钟前
阿里ASR语音转文字,用JS模拟微信
前端·javascript·后端
依然鸣31 分钟前
蓝桥杯多校模拟赛(第二场)题解
数据结构·c++·经验分享·学习·算法·图论