【发布时间】:2018-07-13 10:02:16
【问题描述】:
我有一个简单的侧边栏,里面有一堆列表项,列表项旁边有一个按钮,如下所示:
我在<li> 元素上附加了一个点击处理程序,如下面的代码所示:
<li className="note" onClick={()=> props.selectNote(props.note)} role="button">
<button className="delete-note" onClick={() => console.log('Fired')}>Delete dis</button>
<span className="updated-at">2hr</span>
<div className="note-content">
<h4 className="note-title">
{title}
</h4>
<p className="note-preview">
{notePreview.substr(0, 80)}...
</p>
</div>
</li>
但正如预期的那样,当我单击它旁边的按钮时,实际的 li 会被单击,而不是其中的按钮。我认为这是事件如何冒泡的某种问题,以及将onClick 处理程序附加到非交互式元素是一种不好的做法(我的 ESLint 这么说)。
我想要什么:
- 当列表项被点击时,附加的
onClick事件触发。 - 当按钮被点击时,触发按钮上的
onClick事件,而不是<li>。
【问题讨论】:
标签: javascript html reactjs dom dom-events