我正在尝试实施this React Component等dropzone。但是,我对如何对事件应用写入效果感到有些困惑,例如
dragOver$: DOM
.select('#dropzone')
.events('ondragover')
.map(e => {
e.preventDefault()
e.dataTransfer.dropEffect = 'copy'
})
因为没有下沉,所以没有工作。 map
内的代码应该真正在接收器内执行。
有什么建议吗?
答案 0 :(得分:1)
你应该编写一个简单的驱动程序来处理这个问题。请参阅有关驱动程序here的文档。
看起来你可以这样做:
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。