ReactJS bileşen adları büyük harflerle başlamalıdır?


148

JSBin üzerinde ReactJS çerçevesi ile oynuyorum .

Bileşen adım küçük bir harfle başlıyorsa bunun işe yaramadığını fark ettim.

Örneğin, aşağıdakiler görüntülenmez:

var fml = React.createClass({
  render: function () {
    return <a href='google.com'>Go</a>
  }
});

React.render(<fml />, document.body);

Ama en kısa sürede yerine olarak fmlile Fmlbunun işlemek gelmez.

Etiketlere küçük harflerle başlayamamam için bir neden var mı?


daha fazla detials için bu sorunun cevaplarını kontrol edin: Html tarayıcıda render değil - React js
Mayank Shukla

Yanıtlar:


199

JSX'te küçük harfli etiket adları HTML etiketleri olarak kabul edilir. Ancak, nokta (özellik erişimcisi) olan küçük harfli etiket adları değildir.

Bkz. HTML etiketleri ve React Bileşenleri .

  • <component />derleme React.createElement('component')(html etiketi)
  • <Component /> derlemek React.createElement(Component)
  • <obj.component /> derlemek React.createElement(obj.component)

11
Tezgaha yarım saat daha ekleyin. Deliriyordum, böyle bir şey yapmaya çalışıyordum let component = components[compType]; <component/>ve saçma hatalar alıyordum.
Zequez

2
Ben de <components[name] />hangi işe yaramadı denedim .
諭 岡 諭

8
Daha önce böyle bir kural olduğunu fark etmediğime inanamıyorum.
shaosh

7
Bu kötü bir fikir. Burada kibarım.
Rolf

Evet, bu son derece n00bs için off-koyarak olabilir, çünkü Componentsyerine, arama components, onların güzel site hiçbir hata ama içerik ile yüklenecektir!
olisteadman

45

@Alexandre Kirszenberg çok iyi bir cevap verdi, sadece başka bir detay eklemek istedim.

React div, DOM öğeleri ve React bileşenleri arasında ayrım yapmak için kullandığı vb. Gibi iyi bilinen öğe adlarının bir beyaz listesini içeriyordu .

Ancak, bu listenin tutulması o kadar eğlenceli olmadığından ve web bileşenleri özel öğeler oluşturmayı mümkün kıldığından , tüm React bileşenlerinin büyük harfle başlaması veya bir nokta içermesi gereken bir kural oluşturdular .


3
harika bir bilgi, daha iyi bir resmi belge referans varsa. Teşekkürler.
WaiKit Kung

bu ne zaman değişti?
nolawi

11

Gönderen yetkilinin referansını React :

Bir öğe türü küçük harfle başladığında, veya gibi yerleşik bir bileşene başvurur ve React.createElement öğesine iletilen 'div' veya 'span' dizesi ile sonuçlanır. Büyük harfle başlayan ve React.createElement (Foo) gibi derleme yapan ve JavaScript dosyanızda tanımlanan veya içe aktarılan bir bileşene karşılık gelen türler.

Ayrıca şunu da unutmayın:

Bileşenleri büyük harfle adlandırmanızı öneririz. Küçük harfle başlayan bir bileşeniniz varsa, bunu JSX'te kullanmadan önce büyük harfli bir değişkene atayın.

Bu, kişinin kullanması gerektiği anlamına gelir:

const Foo = foo;fooJSX'te Bileşen öğesi olarak kullanmadan önce .


3

Bir JSXetiketin ilk kısmı , React öğesinin türünü belirler, temel olarak , büyük harf, küçük harf, nokta gösterimi gibi bir kural vardır .

Sermayelendirilmiş ve dot-notasyonu türleri belirtmek JSXEğer JSX kullanmak eğer öyleyse, bileşen Tepki etiketi bahsediyor <Foo />için derleme React.createElement(Foo)
VEYA
<foo.bar />derleme için React.createElement(foo.bar)tanımlanmış veya JavaScript dosyanızda ithal bir bileşene ve uyumluluğunu.

Küçük harf türü , <div>veya gibi bir yerleşik bileşene işaret ederken, <span>bir dize 'div'veya 'span'iletiye neden olur React.createElement('div').

React, bileşenlerin büyük harfle adlandırılmasını önerir. Küçük harfle başlayan bir bileşeniniz varsa, onu kullanmadan önce büyük harfli bir değişkene atayın JSX.


2

JSX'te, React Classes, XML uyumlu olması için büyük harfle yazılır, böylece HTML etiketi ile karıştırılmaz. Reaksiyon sınıfları büyük harfle yazılmazsa, önceden tanımlanmış JSX sözdizimi olarak bir HTML etiketidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.