Om コンポーネントのクリック ハンドラー関数を作成したいと考えています。私が見つけたドキュメントとスタックオーバーフローの例では、常にこのような無名関数を宣言しています
(defn main-view [_ owner]
(reify
om/IRender
(render [_]
(let [xs (items)]
(dom/div nil
(om/build sub-view {:title "View A"})
(om/build sub-view {:title "View B"})
(dom/button
#js {:onClick
(fn [e] (om/transact! xs #(assoc % 1 {:text "zebra"})))}
"Switch To Zebra!"))))))
通常の React で一般的に行われているように、コンポーネント内の jsx/template 領域の外でクリック関数を宣言する方がクリーンだと思います。コンポーネント内のOmでこれを行う方法はありますか? これを試しましたが、 onClick が定義されていないため機能しません:
(defn my-component []
(reify
om/IRender
(render [this]
; Using Sablono syntax
(html [:h1 "Here is a heading" {:on-click 'onClick} ]))
onClick
(onClick [this]
; this part never gets executed when you click
(.log js/console "click"))))
可能であれば、コンポーネントの外部で別の関数を定義することは避けたいです。