2015-07-08 13 views
67

DOM boyunca birçok kez bileşen eklemek için React kullanmak istiyorum. This fiddle, ne yapmak istediğimi gösterir ve herhangi bir hata atmaz.DOM'da React.render() öğesini birden çok kez kullanmak doğru mudur?

HTML:

<div id="container"> 
    <!-- This element's contents will be replaced with the first component. --> 
</div> 

<div id="second-container"> 
    <!-- This element's contents will be replaced with the second component. --> 
</div> 

JS: İşte kod ben this question gördüğüm

var Hello = React.createClass({ 
    render: function() { 
     return <div>Hello {this.props.name}</div>; 
    } 
}); 

React.render(<Hello name="World" />, document.getElementById('container')); 

React.render(<Hello name="Second World" />, document.getElementById('second-container')); 

ve yukarıda yaparak, ben riske sahip olacağım korkuyorum Reaksiyon bileşenleri birbiriyle etkileşir. Bu sorunun cevabı, sunucu tarafındaki Django kullandığım için benim için bir seçenek olmayan sunucu tarafı oluşturma kullanılmasını önerir.

Öte yandan, belki de yaptığım şey tamam, çünkü React kütüphanesinin bir örneğini (yalnızca kendi React örneğini çağıran çoklu bileşenlerin aksine) aldım çünkü?

Bu yol birden çok DOM örneğini kullanmanın bir yolu yolu React?

cevap

66

Evet, aynı sayfadan birden çok kez React.render numaralı telefonu aramak çok iyi. Aynen önerdiğiniz gibi, React kütüphanesinin kendisi sadece bir kez yüklenir, ancak React.render'a yapılan her çağrı, diğerlerinden bağımsız olarak yeni bir bileşen örneği oluşturacaktır. (Aslında, böyle bir durum, sayfanın bazı bölümlerinin React.render kullanılarak oluşturulduğu React'a geçiş sürecinde olan sitelerde nadir değildir ve diğerleri değildir.)

+6

müthiş - "süper şarj etme de son derece yararlıdır "Mevcut bir Django uygulaması. SEO'yu elde etmek için işlenmiş içerik için Django'yu kullanmak ve DOM öğeleriyle kullanıcı etkileşimi için React'ı kullanmak istiyorum. Bu, onu elde etmeyi süper kolaylaştırır. – YPCrumble

+0

muhtemelen muhtemelenComponentUpdate'e de bakabilir ve gelecekte performansınızı önleyebilir (muhtemelen sizin durumunuzda değil). İşte referans: https://facebook.github.io/react/docs/component-specs.html – Jim

+0

@Yayıcıların yanıtı doğruysa, lütfen –

İlgili konular