vant3 解决picker组件经常按钮消失或内容消失的情况

最近在做h5项目时,遇到了一个非常奇怪的问题,某个页面用vant的picker组件有时内容会消失,有时按钮会消失,而且这种情况只在安卓手机上出现,苹果手机和pc端均没有这个问题。
这个现象让我一度怀疑是不是组件适配性不好,不兼容。但是我又发现了项目中还有一个页面也用到了picker组件,但那个页面表现的非常好,一点问题没有。既然有没有问题的情况,那肯定是出问题的那个页面代码写的有问题啦,于是开始改代码。
尝试1:
自己写了toolbar 和option的插槽,没什么作用,但是有一个发现,按钮和内容不是没有,是没有渲染出来。
尝试2:
仔细看代码(别人写的,我接手),发现赋值的时候又一步操作很迷,是多余的,删掉了,当时立下很有效果,一度以为解决了问题,但项目修改部署了几版以后,又出现这个问题了…囧
尝试3:
实在不知道该如何解决,遂请教了师傅,师傅一看代码弹出层竟写到了循环里???痛批我一顿,把弹出层移出后问题果然解决了,牛
总结:出现问题的原因可能是弹出层写到了循环内部,可能出现多个弹出层重叠,至于还有选择的功能,可能是滚动穿透。
最后:路漫漫其修远兮,壮士还得再努力。
修改之后:

		<!-- 循环出来的数据 -->
			<template :key="index" v-for="(other, index) in listOther">
            	<div class="btn-inline">
              	<van-field
                	v-if="other.type === 0"
                	v-model="other['value']"
                	<!-- 中间内容不展示了 -->
          	</template>
          	<van-popup v-model:show="showPicker" position="bottom">
          		<van-picker ref="picker" :columns="columns.data" @confirm="onConfirm" @cancel="showPicker = false"  />
          	</van-popup>

总结的根本原因可能不是很准确,如有大佬路过,还请执教一番。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Vant Weapp中的Picker组件和Popup组件进行组合,实现类似于选择器的效果。具体步骤如下: 1. 在需要触发选择器的元素上绑定一个点击事件,在事件处理函数中调用Popup组件打开方法。 2. 在Popup组件中放置一个Picker组件,并设置Picker组件的数据、事件处理函数等属性。 3. 当Picker组件中的值发生变化时,通过事件处理函数将选中的值传递给父组件,并在父组件中更新需要显示的内容。 下面是一个示例代码: ```html <!-- 在需要触发选择器的元素上绑定点击事件 --> <view bindtap="showPopup">选择</view> <!-- 弹出框 --> <van-popup show="{{showPopup}}" bind:close="onClose"> <van-picker value="{{value}}" range="{{range}}" bind:change="onChange" /> </van-popup> ``` ```javascript Page({ data: { showPopup: false, value: '', range: ['选项1', '选项2', '选项3'] }, // 点击触发选择器弹出框 showPopup() { this.setData({ showPopup: true }); }, // 关闭弹出框 onClose() { this.setData({ showPopup: false }); }, // 选择器数值变化时的回调函数 onChange(event) { const { value } = event.detail; this.setData({ value, // 根据选中的值更新需要显示的内容 selectedOption: this.data.range[value] }); } }); ``` 以上代码中,当用户点击“选择”按钮时,会触发showPopup方法,将showPopup变量设置为true,从而弹出Popup组件。在Popup组件中,放置了一个Picker组件,用于选择需要的值。当用户选择完毕后,会触发Picker组件的change事件,将选中的值传递给父组件,并更新需要显示的内容。最后,在Popup组件的close事件中,将showPopup变量设置为false,关闭弹出框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值