我是ReactJS的新手。 ReactJS似乎完全承擔了渲染DOM節點的責任,並且不會期望任何其他干擾,甚至是jQuery。它帶來了許多方便的jQuery插件不能在React中使用的事實。其中一些插件具有相同的React組件,但仍遠遠不夠。有沒有一種將這兩種東西結合在一起的優雅方式?ReactJS和jQuery是互斥的嗎?
回答
快速回答是沒有沒有優雅的方式來結合他們,並使您的應用程序工作,而不使用醜陋的黑客。
與jQuery相比,ReactJS使用了一個與根本不同的邏輯。在使用ReactJS時,你真的不想搞亂DOM,而這正是jQuery所做的。
但是如果您在同一頁面上分別使用兩個庫,有幾種方法。你可以使用ReactJS作爲獨立的自包含組件,不要將它們與jQuery混合使用(不要試圖用jQuery以任何方式操縱該組件,即使是傾聽事件也可能會非常棘手),而不是像它們可以生活在不同的世界中一樣快樂,但這種限制你可以用React做什麼。
我實際上在一個大型的遺留項目中工作,我們從jQuery緩慢地將組件遷移到組件,但是這是一個緩慢的過程,並且有些事情可以更容易地完成,如果一切都會在ReactJS 。
如果你需要將它們捆綁在一起比我的答案仍然沒有,你不能優雅地做。
但這也並不意味着它不能完成,有辦法讓它工作,但它會引入意外的行爲給你的應用程序,你將不得不創建你真的不想做的解決方法生產。
我建議你衡量一下你需要的更多,ReactJS或jQuery組件,如果你堅持使用另一種方法,將會花更多的時間來開發。
反應結構由數據通量構成的組件。如果組件的層次結構很好,我認爲你不需要實現JQuery。
有很多組件已經在Github的React中完成,它可以做很棒的事情。出於這個原因,如果你使用它們,你將不會失去ReactJS數據流的感覺。
雖然我與@強麥的答案達成一致,我想補充一個更細微差別:
這的確是一個非常非常糟糕的主意,混合jQuery和反應DOM操作。
jQuery有一些非常誘人的操作DOM的簡寫代碼。這些是與反應混合在一起的災難處方。
但是,jQuery也有其他的東西,這與DOM操作無關。而那些jQuery零件實際上與反應完美搭配。
一個恰當的例子是jQuery處理ajax調用和JSON。這些jQuery確實可以很好地與反應混合。
- 1. dart:io和dart:html是互斥的
- 2. onCreate和onRestoreInstanceState是否互斥?
- 3. PTHREAD_MUTEX_ *和PTHREAD_MUTEX_ERRORCHECK是否互斥?
- 4. jquery互斥點擊
- 5. 互斥或不互斥互斥?
- 6. MSMQ中需要互斥嗎?
- 7. static_lock_guard靜態互斥鎖嗎?
- 8. pthread_getspecific和互斥鎖
- 9. 互斥鎖和鎖
- 10. Node.js和互斥體
- 11. Ruby和互斥體
- 12. EventQueues和互斥體
- 13. 同步和互斥
- 14. iOS只讀和保留是互斥的
- 15. Java中互斥線程的互斥量?
- 16. ListView和互斥的ToggleButtons
- 17. C函數recvfrom和sendto是否互斥?
- 18. 靜態Mutext和不是靜態互斥
- 19. Angular UI和Angular Material是否互斥?
- 20. [FromBody]和[FromUri]是否相互排斥?
- 21. 互斥
- 22. 互斥
- 23. 什麼是「分裂互斥」?
- 24. 事件還是互斥?
- 25. MySql事務是否互斥?
- 26. std :: tr1 :: shared_ptr是否互斥?
- 27. AIX是互斥體sempahores?
- 28. 線程和互斥體
- 29. 互斥和內聯函數
- 30. procs,fork()和互斥鎖
檢出[this](https://discuss.reactjs.org/t/jquery-with-react/683) – iplus26
我在我的React應用程序中使用jQuery時,只要我需要使用特殊庫功能,例如[可排序](https://jqueryui.com/sortable/)以獲得流暢的動畫和邏輯。但是,您確實需要介入並親自處理DOM。 – Chris