无论我为阻止它在React应用程序中采取什么措施,事件都会冒出来

时间:2019-08-13 22:09:35

标签: javascript reactjs

我有一个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。

只是……什么也没做。

1 个答案:

答案 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;
    }
  }