在Clojurescript的Reagent中,如何为拖放添加事件监听器?

gzm*_*ask 8 clojurescript

例如,如何在不退回命令式样式clj的情况下执行这些侦听器?

var cols = document.querySelectorAll('#columns .column');
[].forEach.call(cols, function(col) {
  col.addEventListener('dragstart', handleDragStart, false);
  col.addEventListener('dragenter', handleDragEnter, false);
  col.addEventListener('dragover', handleDragOver, false);
  col.addEventListener('dragleave', handleDragLeave, false);
});
Run Code Online (Sandbox Code Playgroud)

Noa*_*Ari 7

在网上找到这个:https : //www.refheap.com/73581

(defn allow-drop [e]
  (.preventDefault e)) ;; because DnD in HTMl5 is crazy...

:draggable true ; -> otherwise the browser won't let you drag it
:on-drag-over allow-drop
:on-drag-enter allow-drop
:on-drag-start #(.setData (.-dataTransfer %) "text/plain" "") ;; for Firefox. You MUST set something as data.
:on-drag-end some-action
:on-drop some-other-action
Run Code Online (Sandbox Code Playgroud)