[英]How to achieve basic animation in React with Om/Clojurescript (coming from jQuery)?
我正在使用Om / Clojurescript進入React,與jQuery合作完成我迄今為止的所有前端工作,我正處於理解如何實現jQuery中的oneliner的簡單和常見任務的主要障礙。
舉一個非常簡單的例子來看一個切換菜單的按鈕:
$('#hamburger-icon').click(function(){
$('.menu-can-toggle').toggleClass('active');
});
根據我的理解,我無法在React中實現這個簡單的jQuery功能,因為它在React之外進行DOM操作會導致問題,對嗎?
因此,我已經完成了,從我能想到的,我想象的東西不是最好的解決方案:
(defcomponent test-header [app owner]
(init-state [_]
{:open false})
(render-state [_ {:keys [open]}]
(dom/div #js{:id "menu-trigger" :className (str (when open "active"))
:onClick #(om/set-state! owner :open (not (om/get-state owner :open)))}
(dom/span {:class "line line-1"})
(dom/span {:class "line line-2"})
(dom/span {:class "line line-3"}))
(dom/ul {:id "menu"}
(dom/li "Item 1")
(dom/li "Item 2")
(dom/li "Item 3"))))
在點擊#menu-trigger
,它切換到:open
狀態。 我現在很困惑如何切換ul#menu
的.active
類,或者其他組件如何響應此操作。 (類似於jQuery中的selector $('.menu-can-toggle')
。
我相信這只是一個關於這個任務的新范例或方法的問題,但我發現的一切似乎與React CSSTransitionGroup等非常復雜,我只是想知道是否有一種標准的方法來實現簡單與上面的jQuery (基本上是單行)一樣的任務。
將函數放在ul中,根據“open”的值切換類名。 例如,顯示(阻止或無)。
(defn display [open]
(if open
#js {}
#js {:display "none"}))
基本上,jQuery正在尋找節點並添加/刪除類。 重新繪制組件(onclick +狀態更改)時,必須使用代碼修改“虛擬DOM”。 React會處理剩下的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.