【发布时间】:2017-07-03 16:01:38
【问题描述】:
我有一个 <ul> 组件包装了一些 <li> 组件。我想避免为每个li 添加一个onClick 处理程序,而是在ul 上使用一个处理程序并捕获冒泡事件。
从冒泡事件中确定/分配被点击组件的正确方法是什么?
class ListItemComponent extends React.Component {
public render() {
return (
<li>Foo</li>
)
}
}
class ListComponent extends React.Component {
private handleClick(event) {
const target = event.target;
// Determine clicked component, or index etc … ?
}
public render() {
const items = this.props.items.map((x, i) => {
<ListItemComponent active=“false” key={i} />
})
return (
<ul onClick={this.handleClick} />
{ items }
</ul>
)
}
}
【问题讨论】:
-
你不能在 React 中传递
event。将event.target直接传递到您的handleClick 函数中。 -
我不确定您建议的是什么解决方案。你能举个例子吗?在我给出的示例中,我当然可以访问该事件。
-
我只是说,当你在周围传递事件时,你真的得到了 SyntheticEvent,这更难处理。
标签: javascript reactjs dom-events event-bubbling