微信小程序开发 - 为 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
相关推荐
Highcharts.js2 小时前
缺失数据可视化图表开发实战|Highcharts创建人员出生统计面积图表示例
开发语言·前端·javascript·信息可视化·highcharts·图表开发
测试员周周7 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
LaughingZhu9 小时前
Product Hunt 每日热榜 | 2026-05-21
前端·人工智能·经验分享·chatgpt·html
怕浪猫9 小时前
Electron 开发实战(一):从零入门核心基础与环境搭建
前端·electron·ai编程
杜子不疼.9 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号39 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
小鹏linux10 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
sycmancia10 小时前
Qt——编辑交互功能的实现
开发语言·qt
石山代码10 小时前
C++ 内存分区 堆区
java·开发语言·c++
前端若水10 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js