vant评分组件滑动误触问题

位置:首页 / 技术中心 / 微信小程序原生

微信小程序原生 Admin 2026-07-29 15:09:57 5

可以了。你可以概括一下,你用到的技术吗


微信小程序原生前端专家


思考过程


可以,这次解决滑动误触 van-rate 主要用到了以下技术点:


### 1. 微信小程序原生触摸事件

- bindtouchstart 、 bindtouchmove 、 bindtouchend

- 在组件根容器上监听,判断用户是在“点击”还是在“滑动屏幕”

- 用 e.touches[0].clientY 计算纵向滑动距离

### 2. vant-weapp 的 readonly 属性

- 给所有 van-rate 动态绑定 readonly

- 检测到滑动时设为只读,阻止评分响应

- 注意点:Boolean 类型属性不能用空字符串,所以用了 readonly="{{ isScrolling ? true : '' }}"

### 3. 组件 properties 默认值

- 给 formData 补上完整初始结构,避免子字段 undefined 导致 vant 报类型错误

### 4. 事件时序与防抖

- onTouchEnd 后延迟 80ms 再恢复可点击状态,防止 change 事件晚于 touchend 触发

### 5. 调试手段

- 在关键节点加 console.log ,观察 touch 和 rate change 的事件顺序

简单说就是: 通过容器监听滑动状态 → 滑动时把评分组件置为只读 → 停止滑动后恢复 ,既不影响正常点击评分,又解决了滑动误触。


15:02

小黄学长


如果下一次我遇到同样的问题,我该如何跟你说


微信小程序原生前端专家


思考过程


下次遇到类似问题,你可以直接按这个模板跟我说,我能更快定位:


1. 问题一句话描述

 例如:滑动页面时会误触 van-rate 评分组件,导致分数被改变。

2. 涉及文件或组件

 例如: packageChild/caseFollowUp/components/observationRecord/observationRecord.wxml 里的 14 个 van-rate 。

3. 期望行为 vs 实际行为

 期望:手指上下滑动页面时,碰到评分组件不要打分。

 实际:滑动过程中星星会亮,分数被改掉。

4. 复现步骤

 例如:进入“综合观察记录”页,手指放在评分区域上下快速滑动,约 3 次能复现 1 次。

5. 报错或日志(如果有)

 直接复制控制台报错,或者你加了 console.log 后的输出。

6. 你已经尝试过的方案(可选)

 例如:我试过给 van-rate 加 readonly ,但不知道滑动时怎么动态控制。

举个可以直接复制的话术例子:

 “滑动页面时 van-rate 会误触打分,文件在 observationRecord.wxml ,14 个评分组件。希望滑动时不可点击,静止点击可以正常评分。没有报错,真机复现率很高。”

这样我就能立刻知道要改哪里、用什么思路解决。

18455111359 扫描二维码