Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法通过onClick事件处理程序访问按钮id_Javascript_Reactjs - Fatal编程技术网

Javascript 无法通过onClick事件处理程序访问按钮id

Javascript 无法通过onClick事件处理程序访问按钮id,javascript,reactjs,Javascript,Reactjs,我有一个数据表,每行都有一个具有唯一id的按钮。onClick事件处理程序应该将按钮id记录到控制台。但是,该id有时仅记录到控制台 <Button id={index} onClick={this.handleClick}> Click </Button> 每次单击按钮时,“button id”文本都会记录到控制台中,但id(例如target.id)有时只会记录到控制台中。我可以做些什么来修复它?您不需要使用nativ event.target 试试这个:

我有一个数据表,每行都有一个具有唯一id的按钮。onClick事件处理程序应该将按钮id记录到控制台。但是,该id有时仅记录到控制台

<Button id={index} onClick={this.handleClick}>
     Click
</Button>

每次单击按钮时,“button id”文本都会记录到控制台中,但id(例如target.id)有时只会记录到控制台中。我可以做些什么来修复它?

您不需要使用nativ event.target

试试这个:

<Button id={index} onClick={this.handleClick.bind(this, index)}>
     Click
</Button>

点击
尝试使用以下方法:

<Button id={index} onClick={this.handleClick(this, index)}>
     Click
</Button>

单击处理程序事件中
target.id
的可用性将取决于您在此处使用的
按钮组件的实现

在简单的情况下,如果您使用的是“本机”
(请注意小写字母“b”),那么您当前的方法将按预期工作:

{/* Using the "native button" here */}
<button id={index} onClick={this.handleClick}>Log id</button>

handleClick = e => {
    // Native button will pass id value of element to e.target 
    console.log('button id', e.target.id);
}

您使用的是哪个按钮组件
handleClick(e, id) {
    console.log('button id', id);
  }
{/* Using the "native button" here */}
<button id={index} onClick={this.handleClick}>Log id</button>

handleClick = e => {
    // Native button will pass id value of element to e.target 
    console.log('button id', e.target.id);
}
{/* Define local arrow function, pass index in scope as second argument */}
<Button id={index} onClick={ e => this.handleClick(e, index) }>
     Click
</Button>

/* Extend function signature to take explict id argument */
handleClick = (e, id) => {
    console.log('button id', id);
  }