页面上有一个按钮元素和以下点击流:
let submitClick$ = sources.DOM.select(buttonSel)
.events("click")
.mapTo(true)
.debug(console.log)
一旦我单击按钮,true
就会记录下来,这是正确的。
但是,当我映射流时,里面的代码会运行两次:
let submitDeal$ = submitClick$.map(() => {
console.log("Clicked")
// ...
})
不应将其他事件处理程序附加到按钮,并且元素本身位于 div 内:
button(".btn--add", "Submit")
通常event.preventDefault()
并event.stopPropagation()
没有什么区别,并且检查事件确实表明它是从同一个 element 触发的button.btn--add
。
不太确定发生了什么,任何想法表示赞赏!谢谢!
版本:
"@cycle/dom": "^12.2.5"
"@cycle/http": "^11.0.1"
"@cycle/xstream-run": "^3.1.0"
"xstream": "^6.4.0"
更新 1:我检查了三次,没有 JS 文件被加载两次。我正在使用 Webpack 捆绑app.js
页面上加载的单个文件(Elixir/Phoenix 应用程序)。此外,Event Listeners
在 Chrome 的开发者工具中检查选项卡中的按钮时,似乎只附加了 1 个处理的事件。
更新 2: 代码要点