我有一个React应用,并且我试图防止事件冒泡。
handleMessageClick(e) {
if (this.state.person.liked === false) {
this.launchErrorModal(
"Error here"
);
e.preventDefault();
e.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
e.stopImmediatePropagation();
return false;
}
}
我已经尝试了所有操作,将我切换为,但没有任何效果。如您所见,我也尝试通过任何方式阻止传播。什么都不需要。
这是我当前的链接:
<a
href={this.createChatLink()}
onClick={this.handleMessageClick}
>
<element />
</a>
为什么传播不会停止?如果条件为假,我只是想阻止链接工作。
我可以确认在单击时绝对会调用handleMessageClick。
只是……什么也没做。
答案 0 :(得分:1)
为确保在所有情况下均避免事件冒泡,请考虑将代码修改为此:
handleMessageClick(e) {
/*
Stop click event propagation immediatly, regardless of the value of
state.person.liked
*/
e.preventDefault();
e.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
e.stopImmediatePropagation();
if (this.state.person.liked === false) {
this.launchErrorModal(
"Error here"
);
return false;
}
}