ページには単一のボタン要素があり、次のクリック ストリームがあります。
let submitClick$ = sources.DOM.select(buttonSel)
.events("click")
.mapTo(true)
.debug(console.log)
ボタンをクリックするtrue
とログに記録されますが、これは正しいです。
ただし、ストリームをマップすると、内部のコードが 2 回実行されます。
let submitDeal$ = submitClick$.map(() => {
console.log("Clicked")
// ...
})
他のイベント ハンドラーをボタンにアタッチする必要はなく、要素自体は div 内に配置されます。
button(".btn--add", "Submit")
通常のと は違いはevent.preventDefault()
ありevent.stopPropagation()
ません。イベントを調べると、同じ要素から起動されていることがわかりますbutton.btn--add
。
何が起こっているのかよくわかりませんが、どんなアイデアでも大歓迎です! ありがとう!
バージョン:
"@cycle/dom": "^12.2.5"
"@cycle/http": "^11.0.1"
"@cycle/xstream-run": "^3.1.0"
"xstream": "^6.4.0"
更新 1: 3 回チェックしましたが、JS ファイルが 2 回読み込まれることはありません。ページにロードされる単一のファイルをバンドルする Webpack を使用しapp.js
ています (Elixir/Phoenix アプリ)。また、Chrome の Developer Tools のタブでボタンを調べると、Event Listeners
処理されたイベントが 1 つだけ添付されているようです。
更新 2: コードの要旨