2015-02-03 44 views
14

içinde çok sayıda DOM yapısına sahip dış kitaplıkları tümleştirin Kullanmakta olduğum bazı non-react kitaplıkları javascript içeren bazı DOM nesli gerçekleştirir. İdeal olarak, tepkimenin render döngüsünde olmasını isterdim, ancak tepki bazı DOM işlevlerini uygulamıyor.Tepki: js

ie. Bir kitaplık, bir başlık (jQuery'yi kullanarak) göstermek için bir parça oluşturmak ister ve bu da sırasıyla document.createDocumentFragment öğesini çağırır.

Çevresinde basit bir çalışma, kütüphanenin bileşenlerin bağlanması veya güncellenmesiyle oluşturulmasını sağlamaktır. Ama sanal DOM kullanarak render etmeye çalışıyorum. Kütüphaneyi yeniden oluşturmak veya taşımak için daha iyi bir yaklaşım var mı?

+1

Eminim ki yoktur. Pek çok JS/jQ kütüphanesinin kendi görsel temsillerini mantıklarından ayırmak için uğraşmadıkları çok kötü. Bir takvimdeki olayları temsil eden bir veri yapısını yönetme yeteneği nedeniyle, bir Reflux mağazasında [FullCalendar] (http://fullcalendar.io/) kullanmak istedik. Ne yazık ki, React ve Reflux kullanarak yeniden yazacağından, onu mevcut arayüzünden ayırmak için neredeyse çok çalışma gerektirecektir. –

+0

jQuery eklentilerini bir React bileşenine dahil etmek mümkündür, ancak oldukça veya etkili değildir. Her işlemden sonra jQuery eklentisi muhtemelen yeniden başlatılmalıdır. http://stackoverflow.com/questions/25436445/using-jquery-plugins-that-transform-the-dom-in-react-components –

cevap

9

"Portal" a ihtiyacınız var.

Metodoloji:

  1. DOM kütüphanelerini genellikle manipüle
  2. çalışır yeniden işlemek ve Tepkisiz DOM ve farklı bir DOM daha bulur şöyle, bu çok iyi bir çözüm açıklıyor https://github.com/ryanflorence/react-training/blob/gh-pages/lessons/05-wrapping-dom-libs.md bir göz atın Bu son kez vardı ve
  3. 'u korkutuyor. React'tan DOM manipülasyonunu render ağacını kırarak ve ardından lib manipülatörleri DOM'a yeniden bağlanarak gizliyoruz.
  4. Bileşenimizin tüketicileri React-land'da kalabilirler.
+0

Lütfen cevabınızı burada belirtin ve başka bir sayfadan hoşlanmayın. – d4Rk

+3

@ d4Rk Endişelenme, hiçbir şeyden hoşlanmam. –

+0

Bu, yalnızca izin verilmeyen bir bağlantıdır. – Puppy