0

ページには単一のボタン要素があり、次のクリック ストリームがあります。

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: コードの要旨

4

2 に答える 2

0

この問題を解決するための情報が少なすぎます。ただし、いくつかのことが頭に浮かびます。

.debug(console.log)butは使用しないでください.debug(x => console.log(x))。実際.debug()には十分です。内部で console.log を使用します。

次に、ボタンは<form>? それがイベントに影響を与えている可能性があります。一般に、この質問には詳細が必要です。

于 2016-10-16T16:34:26.670 に答える
0

これは で修正された xstream のバグによるものであることがわかりましたxstream@7.0.0

于 2016-10-25T13:57:04.890 に答える