微信小程序中@vant/weapp的组件van-calendar及van-picker显示异常问题

本文讲述了作者在处理新项目时遇到的小程序vant组件显示异常问题,涉及picker和calendar组件在不同环境下的显示问题,以及解决过程中尝试的技术路径和最终解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小程序vant显示异常问题

背景

新的紧急项目又来了,新的紧急项目又在年前来了,新的要求一个月内完成的紧急项目又在年前来了…(老板说了,做不完,过年给三工,不能走!!!)

前言

由于新的项目需求将来部署环境可能设计小程序及PC端,在技术选型的时候也增纠结过uniapp+uView2.0还是微信小程序原生+vant。当然了,从标题想必也看出来我选了什么了。本来以为会很顺利的将页面原型百分之九十九点九九九九…的还原出来,但是往往事非人愿,新建了小程序并集成了weapp vant以后,并非一帆风顺

过程

在某个页面使用到picker进行选择的时候,由于是在屏幕中间进行选择的,固使用了popup+picker的组合,当显示了toolbar的标题及按钮时,在模拟器上一切都很正常,但当预览的时候发现,上下两个toolbar!!!当我的心情就是:沃德法克???
曾怀疑是popup的问题,后发现隐藏toolbar就没问题了…后着急赶项目(赖的继续研究以为的组件bug)就隐藏了toolbar然后自定义了一个顺利解决该显示问题。
万万没想到的是,事情并没有因为绕过这个问题而结束。当用到calendar显示日历的时候…它在真机上就老老实实的平铺在页面下面,甚至还能滚动页面看到更多日期。联想到之前的picker问题…看来确实需要解决这个拦路虎了
在这里插入图片描述

在这里插入图片描述
一开始也曾怀疑是vant的版本问题,遂找了一个以前的项目vant版本修改并重新install构建npm…然并卵
后怀疑是project.config.json中配置问题,还是老项目,复制粘贴…还并卵
最后想到了升级skyline的提示以优化内容,将skyline设为false,还是不行。

结果

删一行代码

"componentFramework": "glass-easel",
### 设置 `van-datetime-picker` 组件的时间范围 为了设置 `van-datetime-picker` 组件的时间选择范围,在微信小程序中可以利用组件的 `min-date` 和 `max-date` 属性来限定可选时间区间。这允许开发者指定用户能够选择的最早时间和最晚时间。 对于仅能选择当天及其之前一天的时间限制,可以在页面加载时计算出这两个边界值并将其赋给相应的变量。下面是一个具体的实现方式: #### 计算最小最大日期 通过 JavaScript 的 `Date` 对象创建表示今天和昨天的日期对象,并转换成毫秒数作为 `min-date` 和 `max-date` 的值[^2]。 ```javascript Page({ data: { minDate: null, maxDate: null, currentDate: null, // 默认显示当前月份的第一天 }, onLoad() { const today = new Date(); const yesterday = new Date(today); // 昨天的零点时刻 yesterday.setDate(yesterday.getDate() - 1); yesterday.setHours(0, 0, 0, 0); // 今天的零点时刻 today.setHours(0, 0, 0, 0); this.setData({ minDate: yesterday.getTime(), maxDate: today.getTime(), currentDate: new Date(new Date().getFullYear(), new Date().getMonth()).getTime() }); } }) ``` #### WXML 中配置 datetime-picker 在对应的 `.wxml` 文件里,按照如下方式进行绑定: ```html <view> <!-- 其他代码 --> <van-datetime-picker type="date" :value="currentDate" :min-date="minDate" :max-date="maxDate" @confirm="onConfirm" @cancel="onCancel" /> </view> ``` 上述代码片段展示了如何设定 `van-datetime-picker` 的初始值以及最小最大日期范围。当用户尝试调整日期时,他们将被限制在这个范围内操作。 #### 处理确认取消事件 最后还需要处理用户的交互行为,比如点击“确定”按钮后的回调函数 `onConfirm` 或者点击“取消”的时候执行的动作 `onCancel`: ```javascript methods: { onConfirm(event) { console.log('Selected date:', event.detail); // 更新界面或其他逻辑... }, onCancel() { // 关闭弹窗或者其他清理工作... } } ``` 这样就完成了对 `van-datetime-picker` 组件时间范围的选择限制功能开发。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值