试剂中的左触/右触事件
touch left / touch right events in reagent
我正在使用试剂开发网站。实际上,一般来说,我不清楚如何处理试剂中的触摸事件。我读了这个 post
clojurescript: touch events and Domina,但我是否需要使用 domina 来处理试剂的触摸启动事件?如果用户向左或向右滑动了 %,有人会得到一段代码来检测吗?给定一个 dom 元素?
Reagent 使用 React 的虚拟 DOM 和合成事件。触摸事件是 available in React 但您必须在渲染任何组件之前调用 (.initializeTouchEvents js/React true)
(即在调用 reagent.core/render-component
之前)。
编辑: 下面的代码将无法运行,因为触摸事件比鼠标事件更复杂。有关一些 (JS) 示例,请参阅 this MDN page。 React 似乎实现了相同的触摸 API.
对于滑动百分比,执行如下操作(未经测试):
(defn swipe-element []
(let [swipe-state (atom {:width 0, :start-x 0, :current-x 0})]
(fn []
[:div {:on-touch-start
(fn [e]
(reset! swipe-state {:width (.. e -target -offsetWidth)
:start-x (.. e -target -pageX)
:current-x (.. e -target -pageX)}))
:on-touch-move
(fn [e]
(swap! swipe-state assoc :current-x (.. e -target -pageX)))}
(let [{:keys [width start-x current-x]} @swipe-state
direction (if (> current-x start-x) "right" "left")]
(str "Swipe " direction ": "
(* (/ (.abs js/Math (- start-x current-x)) width) 100) "%")))))
我正在使用试剂开发网站。实际上,一般来说,我不清楚如何处理试剂中的触摸事件。我读了这个 post clojurescript: touch events and Domina,但我是否需要使用 domina 来处理试剂的触摸启动事件?如果用户向左或向右滑动了 %,有人会得到一段代码来检测吗?给定一个 dom 元素?
Reagent 使用 React 的虚拟 DOM 和合成事件。触摸事件是 available in React 但您必须在渲染任何组件之前调用 (.initializeTouchEvents js/React true)
(即在调用 reagent.core/render-component
之前)。
编辑: 下面的代码将无法运行,因为触摸事件比鼠标事件更复杂。有关一些 (JS) 示例,请参阅 this MDN page。 React 似乎实现了相同的触摸 API.
对于滑动百分比,执行如下操作(未经测试):
(defn swipe-element []
(let [swipe-state (atom {:width 0, :start-x 0, :current-x 0})]
(fn []
[:div {:on-touch-start
(fn [e]
(reset! swipe-state {:width (.. e -target -offsetWidth)
:start-x (.. e -target -pageX)
:current-x (.. e -target -pageX)}))
:on-touch-move
(fn [e]
(swap! swipe-state assoc :current-x (.. e -target -pageX)))}
(let [{:keys [width start-x current-x]} @swipe-state
direction (if (> current-x start-x) "right" "left")]
(str "Swipe " direction ": "
(* (/ (.abs js/Math (- start-x current-x)) width) 100) "%")))))