单击时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

回到顶部