0

この React Componentなどのドロップゾーンを実装しようとしています。ただし、イベントに書き込み効果を適用する方法に少しこだわっています。

dragOver$: DOM
  .select('#dropzone')
  .events('ondragover')
  .map(e => {
    e.preventDefault()
    e.dataTransfer.dropEffect = 'copy'
  })

シンクがないため、これは機能しません。内部のコードmapは、実際にはシンク内で実行する必要があります。

助言がありますか?

4

1 に答える 1

1

これを処理する単純なドライバーを作成する必要があります。ここでドライバーに関するドキュメントを参照してください。

次のようなことができるようです。

function main(sources) {
  return {
    dragOver: DOM.select('#dropzone').events('ondragover')
  };
}

const drivers = {
  DOM: makeDOMDriver('#app'),
  dragOver: (e$ => e$.subscribe(e => {
    e.preventDefault()
    e.dataTransfer.dropEffect = 'copy'
  }))
}

つまり、ドライバーはすべての副作用をカプセル化し、それらのインターフェイスからの入力を返します。Rx コードのすべての副作用は、subscribe引数 Observers に制限されます。

于 2016-01-26T03:00:38.453 に答える