微信小程序开发 - 为 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
相关推荐
仿生狮子2 小时前
OpenAI 攻下千禧年难题之后,开发者似乎无动于衷
前端·数学·vibecoding
夏幻灵5 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
Lvan的前端笔记5 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
程序猿编码5 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
三天不学习6 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194056 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
bkspiderx7 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
程序员老陆7 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
沐晓时光7 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
明月_清风7 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js