微信小程序开发 - 为 tap 事件的处理函数传递数据

为 tap 事件的处理函数传递数据

1、基本介绍
  • 在微信小程序中,为 tap 事件的处理函数传递数据,主要通过在组件上设置 data-* 自定义属性来实现
  1. 传递的数据存储在 event.currentTarget.dataset 对象中,currentTarget 指向事件绑定的当前组件

  2. 在 WXML 中,属性名写作短横线形式(例如,data-item-id),在 JS 中获取时,会自动转换为驼峰形式(例如,itemId)

2、演示
html 复制代码
<view bindtap="handleTap" data-user-id="{{123}}" data-user-role="admin">点击我</view>
js 复制代码
Page({
  handleTap(event) {
    const userId = event.currentTarget.dataset.userId;
    const userRole = event.currentTarget.dataset.userRole;
    console.log("userId:", userId);
    console.log("userRole:", userRole);
  },
});
3、常见错误
  1. 写作 bindtap="handleTap(123)",小程序会将整个 "handleTap(123)" 当作一个函数名去查找,导致报错
html 复制代码
<view bindtap="handleTap(123)">点击我</view>
js 复制代码
Page({
  handleTap(data) {
    console.log("data:", data);
  },
});
复制代码
Component "pages/mytest/index" does not have a method "handleTap(123)" to handle event "tap".
  1. 在 WXML 中使用大写,写作 data-itemId="{``{1}}",大写字母会被转为小写,导致 dataset.itemid 存在,而 dataset.itemId 为 undefined
html 复制代码
<view bindtap="handleTap" data-itemId="{{1}}">点击我</view>
js 复制代码
Page({
  handleTap(event) {
    const itemId = event.currentTarget.dataset.itemId;
    console.log("itemId:", itemId);

    const itemid = event.currentTarget.dataset.itemid;
    console.log("itemid:", itemid);
  },
});
复制代码
itemId: undefined
itemid: 1
相关推荐
纪念 2298 小时前
c++类和对象(四)
开发语言·c++
涛涛ing8 小时前
React 19.3 发布,但真正的赢家是 StyleX:当 AI 成为框架的“第一用户”
前端
m0_462803888 小时前
会议签到如何设置手写签名?从创建签到到导出签名 PDF 的完整流程
微信小程序
zhangminghuan8 小时前
Vue vs React 实战拓展面试题|摒弃基础八股,聚焦业务开发核心难点(2026前端进阶)
前端
IT_陈寒8 小时前
Redis主从切换竟让业务卡了3秒?这个坑我替你踩了
前端·人工智能·后端
天若有情6738 小时前
独立开发复盘:我用 Node.js 做了个在线工具箱
前端·json·工具
xieliyu.9 小时前
前端基础:常见CSS选择器用法
前端·css·笔记·vscode
辛苦才能9 小时前
C++多态原理:虚函数表的内存布局与动态绑定的汇编真相
开发语言·c++
铲灰9 小时前
做个总结而已
开发语言
IvanCodes9 小时前
Python 文件操作(十二):文件与目录的读写
开发语言·python