createElement
createElement
bir React elemanı oluşturmanızı sağlar. JSX yazmaya alternatif olarak hizmet eder.
const element = createElement(type, props, ...children)
Başvuru Dokümanı
createElement(type, props, ...children)
Verilen type
, props
ve children
ile bir React elemanı oluşturmak için createElement
çağrısı yapın.
import { createElement } from 'react';
function Greeting({ name }) {
return createElement(
'h1',
{ className: 'greeting' },
'Hello'
);
}
Aşağıda daha fazla örneğe bakın.
Parametreler
-
type
:type
argümanı geçerli bir React bileşen tipi olmalıdır. Örneğin, bir etiket adı dizesi ('div'
veya'span'
gibi) veya bir React bileşeni (bir fonksiyon, bir sınıf veyaFragment
gibi özel bir bileşen) olabilir. -
props
:props
bağımsız değişkeni ya bir nesne ya danull
olmalıdır. Eğernull
geçerseniz, boş bir nesneyle aynı muameleyi görecektir. React, ilettiğinizprops
ile eşleşen prop’lara sahip bir eleman oluşturacaktır.Props
nesnenizdekiref
vekey
öğelerinin özel olduğunu ve döndürülenelement
üzerindeelement.props.ref
veelement.props.key
olarak kullanılamayacağını *unutmayın. Bunlarelement.ref
veelement.key
olarak mevcut olacaktır. -
isteğe bağlı
...children
: Sıfır veya daha fazla alt node. React öğeleri, strings, numbers, portallar, boş node’lar (null
,undefined
,true
vefalse
) ve React node’larının dizileri dahil olmak üzere herhangi bir React node’u olabilirler.
Returns
createElement
, birkaç özelliğe sahip bir React element nesnesi döndürür:
type
: Geçtiğiniztip
.props
:ref
vekey
dışında geçirdiğinizprops
.ref
: Geçtiğinizref
. Eksikse,null
.key
: İlettiğinizanahtar
bir string’e zorlanır. Eksikse,null
.
Genellikle, öğeyi bileşeninizden döndürür veya başka bir öğenin alt elemanı yaparsınız. Öğenin özelliklerini okuyabilseniz de, en iyisi her öğeyi oluşturulduktan sonra opak olarak ele almak ve yalnızca render etmektir.
Uyarılar
-
React öğelerine ve prop’larına immutable** olarak davranmalı ve oluşturulduktan sonra içeriklerini asla değiştirmemelisiniz. Geliştirme sırasında, React bunu uygulamak için döndürülen öğeyi ve
props
özelliğini sığ bir şekilde dondurur. -
JSX kullandığınızda, kendi özel bileşeninizi oluşturmak için bir etikete büyük harfle başlamalısınız. Başka bir deyişle,
<Something />
createElement(Something)
ile eşdeğerdir, ancak<something />
(küçük harf)createElement('something')
ile eşdeğerdir (bunun bir dize olduğuna dikkat edin, bu nedenle yerleşik bir HTML etiketi olarak ele alınacaktır). -
Alt elemanları
createElement
öğesine yalnızca hepsi statik olarak biliniyorsa birden fazla argüman olarak geçirmelisiniz, örneğincreateElement('h1', {}, child1, child2, child3)
. Alt elemanlarınız dinamikse, dizinin tamamını üçüncü bağımsız değişken olarak iletin:createElement('ul', {}, listItems)
. Bu, React’in herhangi bir dinamik liste için eksikanahtar
lar hakkında sizi uyarmasını sağlar. Statik listeler için bu gerekli değildir çünkü asla yeniden sıralanmazlar.
Kullanım
JSX olmadan öğe oluşturma
JSX’i sevmiyorsanız veya projenizde kullanamıyorsanız, alternatif olarak createElement
kullanabilirsiniz.
JSX olmadan bir öğe oluşturmak için, createElement
öğesini bazı type, props ve children ile çağırın:
import { createElement } from 'react';
function Greeting({ name }) {
return createElement(
'h1',
{ className: 'greeting' },
'Hello ',
createElement('i', null, name),
'. Welcome!'
);
}
children isteğe bağlıdır ve ihtiyaç duyduğunuz kadarını geçebilirsiniz (yukarıdaki örnekte üç alt eleman vardır). Bu kod, bir selamlama içeren bir <h1>
başlığı görüntüleyecektir. Karşılaştırma için, aynı örnek JSX ile yeniden yazılmıştır:
function Greeting({ name }) {
return (
<h1 className="greeting">
Hello <i>{name}</i>. Welcome!
</h1>
);
}
Kendi React bileşeninizi oluşturmak için, 'h1'
gibi bir string yerine type olarak Greeting
gibi bir fonksiyon geçirin:
export default function App() {
return createElement(Greeting, { name: 'Taylor' });
}
JSX ile şu şekilde görünecektir:
export default function App() {
return <Greeting name="Taylor" />;
}
İşte createElement
ile yazılmış tam bir örnek:
import { createElement } from 'react'; function Greeting({ name }) { return createElement( 'h1', { className: 'greeting' }, 'Hello ', createElement('i', null, name), '. Welcome!' ); } export default function App() { return createElement( Greeting, { name: 'Taylor' } ); }
Ve işte JSX kullanılarak yazılmış aynı örnek:
function Greeting({ name }) { return ( <h1 className="greeting"> Hello <i>{name}</i>. Welcome! </h1> ); } export default function App() { return <Greeting name="Taylor" />; }
Her iki kodlama stilinde de sorun yoktur, bu nedenle projeniz için hangisini tercih ederseniz onu kullanabilirsiniz. JSX kullanmanın createElement
ile karşılaştırıldığında ana faydası, hangi kapanış etiketinin hangi açılış etiketine karşılık geldiğini görmenin kolay olmasıdır.
Derinlemesine İnceleme
Bir öğe, kullanıcı arayüzünün bir parçasının hafif bir tanımıdır. Örneğin, hem <Greeting name=“Taylor” />
hem de createElement(Greeting, { name: 'Taylor' })
aşağıdaki gibi bir nesne üretir:
// Biraz basitleştirilmiş
{
type: Greeting,
props: {
name: 'Taylor'
},
key: null,
ref: null,
}
Bu nesneyi oluşturmanın Greeting
bileşenini oluşturmadığını veya herhangi bir DOM öğesi yaratmadığını unutmayın.
Bir React öğesi daha çok bir açıklama gibidir - React’in daha sonra Greeting
bileşenini oluşturması için bir talimat. Bu nesneyi App
bileşeninizden döndürerek, React’e bundan sonra ne yapacağını söylersiniz.
Öğeler oluşturmak son derece ucuzdur, bu nedenle optimize etmeye çalışmanıza veya bundan kaçınmanıza gerek yoktur.