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:typeargü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 veyaFragmentgibi özel bir bileşen) olabilir.
- 
props:propsbağımsız değişkeni ya bir nesne ya danullolmalıdır. Eğernullgeçerseniz, boş bir nesneyle aynı muameleyi görecektir. React, ilettiğinizpropsile eşleşen prop’lara sahip bir eleman oluşturacaktır.Propsnesnenizdekirefvekeyöğelerinin özel olduğunu ve döndürülenelementüzerindeelement.props.refveelement.props.keyolarak kullanılamayacağını *unutmayın. Bunlarelement.refveelement.keyolarak 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,truevefalse) 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ğiniz- tip.
- props:- refve- keydışında geçirdiğiniz- props.
- ref: Geçtiğiniz- ref. Eksikse,- null.
- key: İlettiğiniz- anahtarbir 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 eksikanahtarlar 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.