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

如何在React中获取被点击元素的文本内容?

React实现点击按钮获取innerText的几种方法

你现在的代码里只有第一个按钮能拿到值,是因为只有它设置了value属性,第二个按钮没设,所以e.target.value是undefined。要获取按钮显示的文本(innerText),可以用下面几种方法:

方法1:通过事件对象的currentTarget获取innerText

currentTarget始终指向绑定事件的元素(也就是按钮本身),比target更可靠——避免按钮内部嵌套元素时,target意外指向子元素的情况。修改点击事件处理函数即可:

import { useState } from 'react';

function App() {
  const [text, setText] = useState("");

  const handleButtonClick = (e) => {
    const buttonText = e.currentTarget.innerText;
    console.log(buttonText);
    setText(buttonText);
  };

  return (
    <>
      <div className="buttons">
        <button onClick={handleButtonClick}>buttonOne</button>
        <button onClick={handleButtonClick}>buttonTwo</button>
      </div>
      <p>{text}</p>
    </>
  )
}

方法2:直接给点击事件传参(更直观)

不需要依赖DOM元素的属性,直接把按钮文本作为参数传给处理函数,代码可读性更高:

import { useState } from 'react';

function App() {
  const [text, setText] = useState("");

  const handleButtonClick = (buttonText) => {
    console.log(buttonText);
    setText(buttonText);
  };

  return (
    <>
      <div className="buttons">
        <button onClick={() => handleButtonClick("buttonOne")}>buttonOne</button>
        <button onClick={() => handleButtonClick("buttonTwo")}>buttonTwo</button>
      </div>
      <p>{text}</p>
    </>
  )
}

方法3:利用按钮的dataset属性(适合文本动态生成的场景)

如果按钮文本是动态生成的,也可以给按钮加data-*自定义属性,再通过事件对象获取:

import { useState } from 'react';

function App() {
  const [text, setText] = useState("");
  const buttons = ["buttonOne", "buttonTwo"];

  const handleButtonClick = (e) => {
    const buttonText = e.currentTarget.dataset.text;
    console.log(buttonText);
    setText(buttonText);
  };

  return (
    <>
      <div className="buttons">
        {buttons.map(btnText => (
          <button key={btnText} data-text={btnText} onClick={handleButtonClick}>
            {btnText}
          </button>
        ))}
      </div>
      <p>{text}</p>
    </>
  )
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:35:13