在vuejs项目中,我使用诸如this之类的vue事件总线。发出此事件:

  icontag.addEventListener('click', testFunction, false)

  function testFunction () {
    console.log('click1')
    Events.$emit('click2')
  }


并在另一个模块中接收它,我得到的结果是一个click1,但是多个click2。看起来非常像每次有一些代码需要webpack导入/导出时,它都会触发同一事件的事件总线上的其他结果……或其他……,因为在chrome devtools中,相关代码接近click2的附近有类似__WEBPACK_IMPORTED_MODULE_5__util的代码。

知道发生了什么吗?

编辑:
我认为这可能是“热重装程序损坏”。重建dev hot-reload构建后,该问题现在似乎消失了。仍然对类似的经验感兴趣,因为该问题非常难看且持续存在。

最佳答案

我认为Bert的评论是正确的。实际上,您可以在同一事件上多次注册相同的事件处理程序。

尝试删除事件处理程序,然后再次添加。

icontag.removeEventListener("click", testFunction);
icontag.addEventListener('click', testFunction, false)

function testFunction () {
  console.log('click1')
  Events.$emit('click2')
}

关于javascript - Vuejs Eventbus由于Webpack导入输出而触发多次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46153524/

10-11 01:07