2016-05-03 61 views
5

我是ReactJS的新手。 ReactJS似乎完全承擔了渲染DOM節點的責任,並且不會期望任何其他干擾,甚至是jQuery。它帶來了許多方便的jQuery插件不能在React中使用的事實。其中一些插件具有相同的React組件,但仍遠遠不夠。有沒有一種將這兩種東西結合在一起的優雅方式?ReactJS和jQuery是互斥的嗎?

+0

檢出[this](https://discuss.reactjs.org/t/jquery-with-react/683) – iplus26

+0

我在我的React應用程序中使用jQuery時,只要我需要使用特殊庫功能,例如[可排序](https://jqueryui.com/sortable/)以獲得流暢的動畫和邏輯。但是,您確實需要介入並親自處理DOM。 – Chris

回答

6

快速回答是沒有沒有優雅的方式來結合他們,並使您的應用程序工作,而不使用醜陋的黑客。

與jQuery相比,ReactJS使用了一個與根本不同的邏輯。在使用ReactJS時,你真的不想搞亂DOM,而這正是jQuery所做的。

但是如果您在同一頁面上分別使用兩個庫,有幾種方法。你可以使用ReactJS作爲獨立的自包含組件,不要將它們與jQuery混合使用(不要試圖用jQuery以任何方式操縱該組件,即使是傾聽事件也可能會非常棘手),而不是像它們可以生活在不同的世界中一樣快樂,但這種限制你可以用React做什麼。

我實際上在一個大型的遺留項目中工作,我們從jQuery緩慢地將組件遷移到組件,但是這是一個緩慢的過程,並且有些事情可以更容易地完成,如果一切都會在ReactJS 。

如果你需要將它們捆綁在一起比我的答案仍然沒有,你不能優雅地做。

但這也並不意味着它不能完成,有辦法讓它工作,但它會引入意外的行爲給你的應用程序,你將不得不創建你真的不想做的解決方法生產。

我建議你衡量一下你需要的更多,ReactJS或jQuery組件,如果你堅持使用另一種方法,將會花更多的時間來開發。

0

反應結構由數據通量構成的組件。如果組件的層次結構很好,我認爲你不需要實現JQuery。

有很多組件已經在Github的React中完成,它可以做很棒的事情。出於這個原因,如果你使用它們,你將不會失去ReactJS數據流的感覺。

2

雖然我與@強麥的答案達成一致,我想補充一個更細微差別:

這的確是一個非常非常糟糕的主意,混合jQuery和反應DOM操作。
jQuery有一些非常誘人的操作DOM的簡寫代碼。這些是與反應混合在一起的災難處方。

但是,jQuery也有其他的東西,這與DOM操作無關。而那些jQuery零件實際上與反應完美搭配。

一個恰當的例子是jQuery處理ajax調用和JSON。這些jQuery確實可以很好地與反應混合。