单击时React阻止事件在嵌套组件中冒泡
这是一个基本组成部分。无论是<ul>
和<li>
拥有的onClick功能。我只希望onClick
<li>
触发,而不希望触发<ul>
。我该如何实现?
我玩过e.preventDefault(),e.stopPropagation()都无济于事。
class List extends React.Component { constructor(props) {
super(props);
}
handleClick() {
// do something
}
render() {
return (
<ul
onClick={(e) => {
console.log('parent');
this.handleClick();
}}
>
<li
onClick={(e) => {
console.log('child');
// prevent default? prevent propagation?
this.handleClick();
}}
>
</li>
</ul>
)
}
}
// => parent
// => child
回答:
我遇到过同样的问题。我发现stopPropagation 确实 有效。我将列表项拆分为一个单独的组件,如下所示:
class List extends React.Component { handleClick = e => {
// do something
}
render() {
return (
<ul onClick={this.handleClick}>
<ListItem onClick={this.handleClick}>Item</ListItem>
</ul>
)
}
}
class ListItem extends React.Component {
handleClick = e => {
e.stopPropagation(); // <------ Here is the magic
this.props.onClick();
}
render() {
return (
<li onClick={this.handleClick}>
{this.props.children}
</li>
)
}
}
以上是 单击时React阻止事件在嵌套组件中冒泡 的全部内容, 来源链接: utcz.com/qa/409627.html