You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React组件按钮事件中event.target.dataset返回undefined问题

React按钮点击事件dataset返回undefined的解决方法

问题原因

  1. data属性无法存储对象:HTML的data-*属性仅支持字符串类型,直接给data-value传country对象时,会被强制转为"[object Object]",后续读取自然无法拿到有效数据。
  2. event.target指向不确定:点击按钮时,e.target可能指向按钮内部的文本节点(而非按钮本身),导致读取不到按钮上的dataset。

解决方案

方案一:直接在事件处理中传递参数(推荐)

无需依赖dataset,直接将country对象作为参数传给事件处理函数,更符合React开发习惯:

修改组件内的按钮代码:

<button onClick={() => handleButton(country)}> Show details </button>

修改事件处理函数:

const handleButton = (country) => {
  console.log(country); // 直接获取完整的country对象
};

方案二:修复dataset的使用方式(不推荐)

如果一定要用data属性,需要先将对象序列化为JSON字符串,读取时再解析,同时使用e.currentTarget确保获取按钮元素:

修改组件内的按钮代码:

<button data-value={JSON.stringify(country)} onClick={handleButton}> Show details </button>

修改事件处理函数:

const handleButton = (e) => {
  e.preventDefault();
  const { value } = e.currentTarget.dataset; // 用currentTarget确保指向按钮
  const country = JSON.parse(value);
  console.log(country);
};

内容的提问来源于stack exchange,提问作者user13266157

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:20:13