2013-07-11 9 views
79

, ben bazıları gibi bu özellik "veri reactid" kullanıldığını tespit? Çeşitli öznitelikler için yaygın olarak kullanılan veri özniteliklerihtml'de data-reactid niteliği nedir?</p> <pre><code><a data-reactid="......" ></a> </code></pre> <p>o özellik nedir ve ne işe yarar: Ben bazı sayfaların HTML geçmekte iken

+29

'data-reactid', [React JavaScript library] (http://facebook.github.io/react/) tarafından kullanılan özel bir özelliktir. Hangi Facebook ve Instagram ile kullanılmak üzere geliştirilmiştir. – amit

+7

Lütfen tüm cevapların, hangi tarih-özniteliklerinin açıklandığını ve hangi veri tepkimesinin açıklanmadığını açıklamadığını unutmayın. Reaksiyon nesnesi, reak elemanı sınıf örneğiyle dom nesnesine başvurmak için kullanılır. – adrianj98

+2

@ adrianj98, bunun yerine yorumunuzu yanıt olarak neden göndermediniz? – Octopus

cevap

112

data-reactid nitelik React benzersiz DOM içindeki bileşenlerini tanımlamak, böylece kullanılan özel bir niteliktir.

Tepki uygulamaları, istemcinin yanı sıra rendered at the server olabilir, çünkü bu önemlidir. Dahili olarak React, uygulamanızı oluşturan DOM düğümlerine yapılan referansların bir temsilini oluşturur (basitleştirilmiş sürüm aşağıdadır).

{ 
    id: '.1oqi7occu80', 
    node: DivRef, 
    children: [ 
    { 
     id: '.1oqi7occu80.0', 
     node: SpanRef, 
     children: [ 
     { 
      id: '.1oqi7occu80.0.0', 
      node: InputRef, 
      children: [] 
     } 
     ] 
    } 
    ] 
} 

sunucu ve istemci ve tüm bileşen ağacının tefrika sürümünü gönderme potansiyel pahalı arasındaki gerçek nesne referanslarını paylaşmak için hiçbir yol yoktur.Uygulama sunucuda oluşturulduğunda ve istemcide React yüklendiğinde, sahip olduğu tek veri data-reactid öznitelikleridir.

<div data-reactid='.loqi70ccu80'> 
    <span data-reactid='.loqi70ccu80.0'> 
    <input data-reactid='.loqi70ccu80.0' /> 
    </span> 
</div> 

Bu, yukarıdaki veri yapısına geri dönüştürebilmelidir. Bunu yapmanın yolu, benzersiz data-reactid öznitelikleridir. Bu, bileşen ağacını şişirerek olarak adlandırılır.

Ayrıca, React istemci tarafında oluşturuyorsa, referanslarını kaybetmesine gerek duymasa da data-reactid özniteliğini kullanır. Bazı tarayıcılarda, uygulamanızı .innerHTML kullanarak DOM'a ekler, ardından bileşen ağacı hemen bir performans artışı olarak şişirir.

diğer ilginç bir fark oluşturulur istemci tarafı kimlikleri artımlı tamsayı biçimde olacaktır tepki olduğunu (gibi .0.1.4.3), sunucu hale olanlar (örneğin .loqi70ccu80.1.4.3 gibi) rasgele bir dize öneki olacak ise. Bunun nedeni, uygulamanın birden çok sunucuda oluşturulabilmesi ve herhangi bir çarpışma olmaması önemlidir. İstemci tarafında, sadece tek bir oluşturma işlemi vardır, bu da sayaçların benzersiz kimlikleri sağlamak için kullanılabileceği anlamına gelir.

React 15 uses document.createElement instead, bu nedenle, istemci tarafından oluşturulan işaretleme artık bu öznitelikleri içermez.

+3

Bu kabul edilen yanıtın olması gerektiği gibi olmalıdır. soruyu cevaplayan tek kişi. – John

+0

https://gcanti.github.io/2014/11/24/understanding-react-and-reimplementing-it-from-scratch-part-2.html – asdfasdfads

+1

React 15 güncellemesinin büyük + 1'i React için –

3

. Genellikle javascript ile. Site davranışı ile ilgili herhangi bir şey etkilemezler ve gerekli her ne amaçla olursa olsun verileri iletmek için uygun bir yöntem olarak dururlar.

http://ejohn.org/blog/html-5-data-attributes/

Sen (boşluk veya özel karakterler ile alfanumerik) herhangi bir standart özellik güvenli dizeye data- prefixing bir veri niteliği oluşturabilir: İşte şeyleri temizlemek olabilecek bir makale. Örneğin, data-id için veya bu durumda data-reactid HTML5'teki

11

Custom Data attribute

cevabım Ian'ın yorumunu alıntı ister misiniz: elemana (geçerli bir tek)

Bu sadece bir özellik Bununla ilgili veri/bilgi depolamak için kullanabilirsiniz.

Bu kod daha sonra olay işleyicisinde geri alır ve hedef çıktı elemanını bulur. Metnin çıkarılması gereken div sınıfını etkin bir şekilde depolar.

reactid sadece bir son ekidir, burada herhangi bir adınız olabilir, örneğin: data-Ayman.

Farkı bulmak istiyorsanız, bu SO answer and comment adresindeki bilmeceleri kontrol edin.

+8

, sağladığınız bağlantıya göre özellik adında büyük harf kullanamayacağınızı unutmayın. – Lez

+1

Evet, bu kısıtlama biraz yanıltıcıdır. DOM'ın gerçek öznitelik adının büyük harfleri olamaz, ancak HTML etiketinde yazılan öznitelik, tüm etiket ve özellik adları zaten okundukları şekilde otomatik olarak küçültüldükleri için olabilir. Yani HTML'de büyük harf kullanabilirsiniz, ancak JS'de hepsi küçük harflerle sonuçlanır. https://www.w3.org/TR/2010/WD-html5-20101019/elements.html#embedding-custom-non-visible-data-with-the-data-attributes – Peeja

35

Bu, özel bir html özniteliğidir, ancak muhtemelen bu durumda Facebook React JS Library tarafından kullanılır.

bir göz atın: http://facebook.github.io/react/

İlgili konular