試薬を使用してサイトを開発しています。実際、一般的に、試薬でタッチイベントを操作する方法は私にはわかりません。この投稿 clojurescript: touch events and Dominaを読みましたが、 domina を使用して on-touch-start イベントをagentで処理する必要がありますか? ユーザーが%を左または右にスワイプした場合、dom要素を指定して、検出するコードのスニペットを誰かが持っているでしょうか?
1 に答える
3
Reagent は、React の仮想 DOM と合成イベントを使用します。タッチ イベントはReact で使用できますが、コンポーネントをレンダリングする前に (つまり、 を呼び出す(.initializeTouchEvents js/React true)前にreagent.core/render-component) 呼び出す必要があります。
編集:タッチ イベントはマウス イベントよりも複雑なため、以下のコードは機能しません。いくつかの (JS) 例については、この MDN ページを参照してください。React は同じ touch 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) "%")))))
于 2015-09-06T10:23:58.063 に答える