如何在react中返回单击元素的属性?

IT技术 javascript reactjs onclick buttonclick
2021-04-30 21:29:22

我想知道是否有一种简单的方法可以在React.js 中获取 clicked 元素的属性

function App () {
    return (
        <button
          title={'foo'}
          onClick={myFunction(this)}
         >
            click me
         </button>
    )
}

function myFunction(e) {
  alert(e.getAttribute('title')); 
}

现在我得到:TypeError: can't access property "getAttribute", e is undefined

我需要在函数内部使用它,以便稍后将属性传递给另一个(工作)函数。

3个回答

您可以通过 currentTarget 访问标题

试试这个:


function App () {
    return (
        <button
          title={'foo'}
          onClick={myFunction}
         >
            click me
         </button>
    )
}

function myFunction(e) {
  alert(e.currentTarget.title); 
}

你必须这样打电话

<button
    title={'foo'}
    onClick={(e) => myFunction(e.currentTarget.title)}
>
   click me
</button>

在函数中,你必须像这样。

function myFunction(e) {
  alert(e); // e is the value that you have pass 
}

onClick={myFunction(this)}意味着onClickprop的值将设置为由 返回的值myFunction,即myFunction(this)在评估代码时立即运行(而不是在单击按钮时)。您可能想要类似的东西onClick={() => myFunction(this)},以便在单击按钮时运行箭头函数(并且箭头函数将调用myFunction)。

但是,thisis undefined,从您收到的错误消息(“e 未定义”)可以看出,因此您收到错误(undefined没有名为“getAttribute”的属性)。

您可以myFunction像这样传递事件对象

onClick={(e) => myFunction(e)}

然后你可以访问button元素,e.currentTarget然后获取title属性:

function myFunction(e) {
  alert(e.currentTarget.getAttribute('title')); 
}