Ortak bileşenler (örn. <div>)

<div> gibi tüm yerleşik tarayıcı bileşenleri bazı ortak prop’ları ve olayları destekler.


Referans

Ortak bileşenler (örn. <div>)

<div className="wrapper">Herhangi bir içerik</div>

Aşağıda daha fazla örnek bulabilirsiniz.

Prop’lar

Şu özel React prop’ları tüm yerleşik bileşenlerde desteklenir:

  • children: Bir React düğümü (bir eleman, bir string, bir sayı, bir portal, null, undefined ve boolean’lar gibi boş bir düğüm, veya diğer React düğümlerinden bir dizi). Bileşenin içeriğini belirtir. JSX kullandığınızda, children prop’unu genellikle etiketleri iç içe <div><span /></div> gibi yerleştirerek üstü kapalı olarak belirteceksiniz.

  • dangerouslySetInnerHTML: İçinde saf bir HTML string’i bulunan { __html: '<p>herhangi bir html</p>' } biçiminde bir nesne. DOM düğümünün innerHTML özelliğini geçersiz kılar ve içeriye verilen HTML’i gösterir. Bunu kullanırken son derece dikkatli olmalısınız! Eğer içteki HTML güvenilir değilse (mesela kullanıcı verisine dayanan bir şeyse), bir XSS riski ortaya çıkarırsınız. dangerouslySetInnerHTML kullanımıyla ilgili daha fazlasını okuyun.

  • ref: useRef veya createRef’ten bir ref nesnesi, veya ref callback fonksiyonu, veya eski sürüm ref’leri için bir string. Bu düğümde ref’iniz DOM elemanıyla doldurulacaktır. DOM’u ref’lerle manipüle etmeyle ilgili daha fazlasını okuyun.

  • suppressContentEditableWarning: Bir boolean. Eğer true ise, hem children hem de contentEditable={true} prop’larına sahip olan elemanlarda (ki bunlar normalde birlikte çalışmazlar) React’ın gösterdiği uyarıları baskılar. Bunu, contentEditable içeriğini manuel olarak yöneten bir metin girdisi kütüphanesi geliştiriyorsanız kullanın.

  • suppressHydrationWarning: Bir boolean. Eğer sunucu taraflı render’lama kullanıyorsanız, sunucu ve istemci farklı içerikleri render ettiğinde normalde bir uyarı görürsünüz. Bazı ender durumlarda (zaman damgası gibi) ise birebir eşleşmeyi sağlamak çok zor veya imkansızdır. Eğer suppressHydrationWarning’i true olarak ayarlarsanız, React o elemanın içeriği ve niteliklerindeki yanlış eşleşmelerle ilgili bir uyarı vermeyecektir. Yalnızca bir kademe derinde çalışır ve bir kaçış yolu olarak kullanılması amaçlanmıştır. Gereğinden fazla kullanmayınız. Hydration hatalarını baskılamayla ilgili daha fazlasını okuyun.

  • style: CSS biçimlerini taşıyan bir nesne, örneğin { fontWeight: 'bold', margin: 20 }. DOM’un style özelliğine benzer olarak, CSS özellik isimleri camelCase olarak yazılmalıdır, örneğin font-weight yerine fontWeight. Değerleri string veya sayı olarak verebilirsiniz. width: 100 şeklinde bir sayı verdiğinizde, eğer birimsiz özellik değilse, React bu sayıya otomatik olarak px (“piksel”)‘i ekler. style’ı yalnızca, biçim değerlerini önceden bilmediğiniz dinamik biçimler için kullanmanızı tavsiye ediyoruz. Diğer durumlarda ise className ile düz CSS sınıfları uygulamak daha verimli. className and style ile ilgili daha fazlasını okuyun.

Şu standart DOM prop’ları da tüm yerleşik bileşenlerde desteklenir:

  • accessKey: Bir string. Element için bir keyboard shortcut belirtir. Genellikle önerilmez.
  • aria-*: ARIA attribute’ları, bu element için accessibility tree bilgisini belirtmenizi sağlar. Tam referans için ARIA attributes sayfasına bakın. React’te tüm ARIA attribute adları HTML’dekiyle tamamen aynıdır.
  • autoCapitalize: Bir string. User input’unun büyük harfe çevrilip çevrilmeyeceğini ve nasıl çevrileceğini belirtir.
  • className: Bir string. Element’in CSS class name’ini belirtir. CSS style uygulama hakkında daha fazla bilgi edinin.
  • contentEditable: Bir boolean. true ise browser, user’ın render edilen element’i doğrudan edit etmesine izin verir. Bu, Lexical gibi rich text input library’lerini implement etmek için kullanılır. React, contentEditable={true} olan bir element’e React children pass etmeye çalışırsanız uyarı verir; çünkü React, user edit’lerinden sonra içeriğini update edemeyecektir.
  • data-*: Data attribute’ları, element’e bazı string data’lar eklemenizi sağlar; örneğin data-fruit="banana". React’te bunlar yaygın olarak kullanılmaz, çünkü genellikle data’yı bunun yerine props veya state’ten okursunuz.
  • dir: 'ltr' veya 'rtl'. Element’in text direction’ını belirtir.
  • draggable: Bir boolean. Element’in draggable olup olmadığını belirtir. HTML Drag and Drop API’nin bir parçasıdır.
  • enterKeyHint: Bir string. Virtual keyboard’larda enter key için hangi action’ın gösterileceğini belirtir.
  • htmlFor: Bir string. <label> ve <output> için, label’ı bir control ile ilişkilendirmenizi sağlar. for HTML attribute ile aynıdır. React, HTML attribute adları yerine standart DOM property adlarını (htmlFor) kullanır.
  • hidden: Bir boolean veya string. Element’in hidden olup olmayacağını belirtir.
  • id: Bir string. Bu element için unique identifier belirtir; daha sonra onu bulmak veya başka element’lerle connect etmek için kullanılabilir. Aynı component’in birden fazla instance’ı arasında çakışmaları önlemek için bunu useId ile generate edin.
  • is: Bir string. Belirtilirse, component bir custom element gibi davranır.
  • inputMode: Bir string. Hangi tür keyboard’un gösterileceğini belirtir (örneğin text, number veya telephone).
  • itemProp: Bir string. Element’in structured data crawler’ları için hangi property’yi temsil ettiğini belirtir.
  • lang: Bir string. Element’in language’ını belirtir.
  • onAnimationEnd: Bir AnimationEvent handler function’ı. Bir CSS animation tamamlandığında fire olur.
  • onAnimationEndCapture: onAnimationEnd’in capture phase’de fire olan bir versiyonu.
  • onAnimationIteration: Bir AnimationEvent handler function’ı. Bir CSS animation iteration’ı bittiğinde ve bir diğeri başladığında fire olur.
  • onAnimationIterationCapture: onAnimationIteration’ın capture phase’de fire olan bir versiyonu.
  • onAnimationStart: Bir AnimationEvent handler function’ı. Bir CSS animation başladığında fire olur.
  • onAnimationStartCapture: onAnimationStart, ancak capture phase’de fire olur.
  • onAuxClick: Bir MouseEvent handler function’ı. Primary olmayan pointer button’a click edildiğinde fire olur.
  • onAuxClickCapture: onAuxClick’in capture phase’de fire olan bir versiyonu.
  • onBeforeInput: Bir InputEvent handler function’ı. Editable bir element’in value’su değiştirilmeden önce fire olur. React henüz native beforeinput event’ini kullanmaz; bunun yerine diğer event’leri kullanarak bunu polyfill etmeye çalışır.
  • onBeforeInputCapture: onBeforeInput’un capture phase’de fire olan bir versiyonu.
  • onBlur: Bir FocusEvent handler function’ı. Bir element focus’u kaybettiğinde fire olur. Built-in browser blur event’inin aksine, React’te onBlur event’i bubble eder.
  • onBlurCapture: onBlur’un capture phase’de fire olan bir versiyonu.
  • onClick: Bir MouseEvent handler function’ı. Pointing device üzerindeki primary button’a click edildiğinde fire olur.
  • onClickCapture: onClick’in capture phase’de fire olan bir versiyonu.
  • onCompositionStart: Bir CompositionEvent handler function’ı. Bir input method editor yeni bir composition session başlattığında fire olur.
  • onCompositionStartCapture: onCompositionStart’ın capture phase’de fire olan bir versiyonu.
  • onCompositionEnd: Bir CompositionEvent handler function’ı. Bir input method editor bir composition session’ı tamamladığında veya iptal ettiğinde fire olur.
  • onCompositionEndCapture: onCompositionEnd’in capture phase’de fire olan bir versiyonu.
  • onCompositionUpdate: Bir CompositionEvent handler function’ı. Bir input method editor yeni bir character aldığında fire olur.
  • onCompositionUpdateCapture: onCompositionUpdate’in capture phase’de fire olan bir versiyonu.
  • onContextMenu: Bir MouseEvent handler function’ı. User bir context menu açmaya çalıştığında fire olur.
  • onContextMenuCapture: onContextMenu’nün capture phase’de fire olan bir versiyonu.
  • onCopy: Bir ClipboardEvent handler function’ı. User clipboard’a bir şey copy etmeye çalıştığında fire olur.
  • onCopyCapture: onCopy’nin capture phase’de fire olan bir versiyonu.
  • onCut: Bir ClipboardEvent handler function’ı. User clipboard’a bir şey cut etmeye çalıştığında fire olur.
  • onCutCapture: onCut’ın capture phase’de fire olan bir versiyonu.
  • onDoubleClick: Bir MouseEvent handler function’ı. User iki kez click ettiğinde fire olur. Browser dblclick event’ine karşılık gelir.
  • onDoubleClickCapture: onDoubleClick’in capture phase’de fire olan bir versiyonu.
  • onDrag: Bir DragEvent handler function’ı. User bir şeyi drag ederken fire olur.
  • onDragCapture: onDrag’in capture phase’de fire olan bir versiyonu.
  • onDragEnd: Bir DragEvent handler function’ı. User bir şeyi drag etmeyi bıraktığında fire olur.
  • onDragEndCapture: onDragEnd’in capture phase’de fire olan bir versiyonu.
  • onDragEnter: Bir DragEvent handler function’ı. Drag edilen content geçerli bir drop target’a girdiğinde fire olur.
  • onDragEnterCapture: onDragEnter’ın capture phase’de fire olan bir versiyonu.
  • onDragOver: Bir DragEvent handler function’ı. Drag edilen content geçerli bir drop target üzerinde drag edilirken fire olur. Drop’a izin vermek için burada e.preventDefault() çağırmalısınız.
  • onDragOverCapture: onDragOver’ın capture phase’de fire olan bir versiyonu.
  • onDragStart: Bir DragEvent handler function’ı. User bir element’i drag etmeye başladığında fire olur.
  • onDragStartCapture: onDragStart’ın capture phase’de fire olan bir versiyonu.
  • onDrop: Bir DragEvent handler function’ı. Bir şey geçerli bir drop target’a drop edildiğinde fire olur.
  • onDropCapture: onDrop’un capture phase’de fire olan bir versiyonu.
  • onFocus: Bir FocusEvent handler function’ı. Bir element focus aldığında fire olur. Built-in browser focus event’inin aksine, React’te onFocus event’i bubble eder.
  • onFocusCapture: onFocus’un capture phase’de fire olan bir versiyonu.
  • onGotPointerCapture: Bir PointerEvent handler function’ı. Bir element programmatically bir pointer’ı capture ettiğinde fire olur.
  • onGotPointerCaptureCapture: onGotPointerCapture’ın capture phase’de fire olan bir versiyonu.
  • onKeyDown: Bir KeyboardEvent handler function’ı. Bir key basıldığında fire olur.
  • onKeyDownCapture: onKeyDown’ın capture phase’de fire olan bir versiyonu.
  • onKeyPress: Bir KeyboardEvent handler function’ı. Deprecated. Bunun yerine onKeyDown veya onBeforeInput kullanın.
  • onKeyPressCapture: onKeyPress’in capture phase’de fire olan bir versiyonu.
  • onKeyUp: Bir KeyboardEvent handler function’ı. Bir key bırakıldığında fire olur.
  • onKeyUpCapture: onKeyUp’ın capture phase’de fire olan bir versiyonu.
  • onLostPointerCapture: Bir PointerEvent handler function’ı. Bir element bir pointer’ı capture etmeyi bıraktığında fire olur.
  • onLostPointerCaptureCapture: onLostPointerCapture’ın capture phase’de fire olan bir versiyonu.
  • onMouseDown: Bir MouseEvent handler function’ı. Pointer basıldığında fire olur.
  • onMouseDownCapture: onMouseDown’ın capture phase’de fire olan bir versiyonu.
  • onMouseEnter: Bir MouseEvent handler function’ı. Pointer bir element’in içine hareket ettiğinde fire olur. Capture phase’i yoktur. Bunun yerine, onMouseLeave ve onMouseEnter, çıkılan element’ten girilen element’e doğru propagate eder.
  • onMouseLeave: Bir MouseEvent handler function’ı. Pointer bir element’in dışına hareket ettiğinde fire olur. Capture phase’i yoktur. Bunun yerine, onMouseLeave ve onMouseEnter, çıkılan element’ten girilen element’e doğru propagate eder.
  • onMouseMove: Bir MouseEvent handler function’ı. Pointer koordinat değiştirdiğinde fire olur.
  • onMouseMoveCapture: onMouseMove’un capture phase’de fire olan bir versiyonu.
  • onMouseOut: Bir MouseEvent handler function’ı. Pointer bir element’in dışına hareket ettiğinde veya bir child element’e girdiğinde fire olur.
  • onMouseOutCapture: onMouseOut’un capture phase’de fire olan bir versiyonu.
  • onMouseUp: Bir MouseEvent handler function’ı. Pointer bırakıldığında fire olur.
  • onMouseUpCapture: onMouseUp’ın capture phase’de fire olan bir versiyonu.
  • onPointerCancel: Bir PointerEvent handler function’ı. Browser bir pointer interaction’ı iptal ettiğinde fire olur.
  • onPointerCancelCapture: onPointerCancel’ın capture phase’de fire olan bir versiyonu.
  • onPointerDown: Bir PointerEvent handler function’ı. Bir pointer active olduğunda fire olur.
  • onPointerDownCapture: onPointerDown’ın capture phase’de fire olan bir versiyonu.
  • onPointerEnter: Bir PointerEvent handler function’ı. Bir pointer bir element’in içine hareket ettiğinde fire olur. Capture phase’i yoktur. Bunun yerine, onPointerLeave ve onPointerEnter, çıkılan element’ten girilen element’e doğru propagate eder.
  • onPointerLeave: Bir PointerEvent handler function’ı. Bir pointer bir element’in dışına hareket ettiğinde fire olur. Capture phase’i yoktur. Bunun yerine, onPointerLeave ve onPointerEnter, çıkılan element’ten girilen element’e doğru propagate eder.
  • onPointerMove: Bir PointerEvent handler function’ı. Bir pointer koordinat değiştirdiğinde fire olur.
  • onPointerMoveCapture: onPointerMove’un capture phase’de fire olan bir versiyonu.
  • onPointerOut: Bir PointerEvent handler function’ı. Bir pointer bir element’in dışına hareket ettiğinde, pointer interaction iptal edildiğinde ve birkaç başka nedenle fire olur.
  • onPointerOutCapture: onPointerOut’un capture phase’de fire olan bir versiyonu.
  • onPointerUp: Bir PointerEvent handler function’ı. Bir pointer artık active olmadığında fire olur.
  • onPointerUpCapture: onPointerUp’ın capture phase’de fire olan bir versiyonu.
  • onPaste: Bir ClipboardEvent handler function’ı. User clipboard’dan bir şey paste etmeye çalıştığında fire olur.
  • onPasteCapture: onPaste’in capture phase’de fire olan bir versiyonu.
  • onScroll: Bir Event handler function’ı. Bir element scrolled olduğunda fire olur. Bu event bubble etmez.
  • onScrollCapture: onScroll’un capture phase’de fire olan bir versiyonu.
  • onSelect: Bir Event handler function’ı. Input gibi editable bir element içindeki selection değiştikten sonra fire olur. React, onSelect event’ini contentEditable={true} element’ler için de çalışacak şekilde extend eder. Ayrıca React, bunu empty selection ve edit’lerde de fire olacak şekilde extend eder (bu selection’ı etkileyebilir).
  • onSelectCapture: onSelect’in capture phase’de fire olan bir versiyonu.
  • onTouchCancel: Bir TouchEvent handler function’ı. Browser bir touch interaction’ı iptal ettiğinde fire olur.
  • onTouchCancelCapture: onTouchCancel’ın capture phase’de fire olan bir versiyonu.
  • onTouchEnd: Bir TouchEvent handler function’ı. Bir veya daha fazla touch point kaldırıldığında fire olur.
  • onTouchEndCapture: onTouchEnd’in capture phase’de fire olan bir versiyonu.
  • onTouchMove: Bir TouchEvent handler function’ı. Bir veya daha fazla touch point hareket ettirildiğinde fire olur.
  • onTouchMoveCapture: onTouchMove’un capture phase’de fire olan bir versiyonu.
  • onTouchStart: Bir TouchEvent handler function’ı. Bir veya daha fazla touch point yerleştirildiğinde fire olur.
  • onTouchStartCapture: onTouchStart’ın capture phase’de fire olan bir versiyonu.
  • onTransitionEnd: Bir TransitionEvent handler function’ı. Bir CSS transition tamamlandığında fire olur.
  • onTransitionEndCapture: onTransitionEnd’in capture phase’de fire olan bir versiyonu.
  • onWheel: Bir WheelEvent handler function’ı. User bir wheel button’ı döndürdüğünde fire olur.
  • onWheelCapture: onWheel’ın capture phase’de fire olan bir versiyonu.
  • role: Bir string. Assistive technology’ler için element role’ünü açıkça belirtir.
  • slot: Bir string. Shadow DOM kullanırken slot name’i belirtir. React’te eşdeğer pattern genellikle JSX’i props olarak pass ederek elde edilir; örneğin <Layout left={<Sidebar />} right={<Content />} />.
  • spellCheck: Bir boolean veya null. Açıkça true veya false olarak set edilirse, spellchecking’i etkinleştirir veya devre dışı bırakır.
  • tabIndex: Bir number. Default Tab button behavior’ını override eder. -1 ve 0 dışındaki value’ları kullanmaktan kaçının.
  • title: Bir string. Element için tooltip text’ini belirtir.
  • translate: 'yes' veya 'no'. 'no' pass etmek, element content’ini çevrilmekten hariç tutar.

Prop olarak özel nitelikler de verebilirsiniz, örneğin ozelprop="herhangiBirDeger". Bu, üçüncü parti kütüphaneleri entegre ederken işinize yarayabilir. Özel nitelik isimlerinin küçük harflerle yazılması ve on ile başlamaması gerekmektedir. Değer bir stringe dönüştürülecek. Eğer null veya undefined verirseniz bu özel nitelik kaldırılacaktır.

Şu olaylar yalnızca <form> elemanlarında çalışır:

Şu olaylar yalnızca <dialog> elemanlarında çalışır. Tarayıcı olaylarının aksine, bunlar React’ta kabarırlar:

Şu olaylar yalnızca <details> elemanlarında çalışır. Tarayıcı olaylarının aksine, bunlar React’ta kabarırlar:

Şu olaylar <img>, <iframe>, <object>, <embed>, <link>, ve SVG <image> elemanlarında çalışır. Tarayıcı olaylarının aksine, bunlar React’ta kabarırlar:

Şu olaylar <audio> ve <video> gibi kaynaklarda çalışır. Tarayıcı olaylarının aksine, bunlar React’ta kabarırlar:

Uyarılar

  • Aynı anda hem children hem de dangerouslySetInnerHTML kullanamazsınız.
  • Bazı olaylar (onAbort ve onLoad gibi) tarayıcıda kabarmaz ama React’ta kabarır.

ref callback fonksiyonu

ref niteliğine, bir ref nesnesi yerine (useRef tarafından döndürülen gibi) bir fonksiyon verebilirsiniz.

<div ref={(node) => {
console.log('Bağlı', node);

return () => {
console.log('Temizlik', node)
}
}}>

ref geri çağırma fonksiyonunun kullanım örneğine bakın.

<div> DOM düğümü ekrana eklendiğinde, React ref geri çağırma fonksiyonunuzu DOM node parametresiyle çağıracaktır. O <div> DOM düğümü kaldırıldığında, React geri çağırmadan döndürülen temizlik fonksiyonunu çağıracaktır.

React ayrıca, farklı bir ref geri çağırma fonksiyonu geçtiğinizde de ref geri çağırmanızı çağıracaktır. Yukarıdaki örnekte, (node) => { ... } her render işleminde farklı bir fonksiyondur. Bileşen yeniden render edildiğinde, önceki fonksiyon null parametresiyle çağrılacak ve sonraki fonksiyon DOM düğümüyle çağrılacaktır.

Parametreler

  • node: Bir DOM düğümü. ref eklenirken, React size DOM düğümünü iletecektir. Her render işleminde ref geri çağırma fonksiyonu için aynı fonksiyon referansını geçmediğiniz sürece, geri çağırma fonksiyonu her bileşen yeniden render edildiğinde geçici olarak temizlenip yeniden oluşturulacaktır.

Not

React 19, ref geri çağırmaları için temizlik fonksiyonları ekledi.

Geriye dönük uyumluluğu desteklemek için, ref geri çağırmasından bir temizlik fonksiyonu döndürülmezse, ref ayrıldığında node ile null çağrılacaktır. Bu davranış gelecekteki bir sürümde kaldırılacaktır.

Döndürülenler

  • isteğe bağlı temizlik fonksiyonu: ref ayrıldığında, React temizlik fonksiyonunu çağıracaktır. Eğer ref geri çağırmasından bir fonksiyon döndürülmezse, React, ref ayrıldığında geri çağırmayı tekrar null parametresiyle çağıracaktır. Bu davranış gelecekteki bir sürümde kaldırılacaktır.

Uyarılar

  • Strict Mode etkinleştirildiğinde, React ilk gerçek kurululumdan önce bir ekstra sadece geliştirme amaçlı kurulum+temizlik döngüsü çalıştıracaktır. Bu, temizlik mantığınızın kurulum mantığını “yansıttığını” ve kurulumun yaptığı her şeyi durdurup geri aldığından emin olan bir stres testidir. Bu, bir problem oluşturuyorsa temizlik fonksiyonunu uygulayın.
  • Farklı bir ref geri çağırma fonksiyonu geçtiğinizde, React, sağlanmışsa önceki geri çağırmanın temizlik fonksiyonunu çağıracaktır. Eğer temizlik fonksiyonu tanımlanmazsa, ref geri çağırması null parametresiyle çağrılacaktır. Sonraki fonksiyon ise DOM düğümü ile çağrılacaktır.

React olay nesnesi

Olay yöneticileriniz bir React olay nesnesi alacaktır. Buna bazen “sentetik olay” da denir.

<button onClick={e => {
console.log(e); // React olay nesnesi
}} />

Altta yatan DOM olaylarıyla aynı standartlara uyar ama bazı tarayıcı tutarsızlıklarına çözüm sağlar.

Bazı React olayları tarayıcının yerel olaylarıyla birebir eşleşmez. Örneğin onMouseLeave’de e.nativeEvent bir mouseout olayına işaret edecektir. Birebir eşleşme açık API’ye dahil değildir ve gelecekte değişebilir. Eğer herhangi bir sebeple altta yatan tarayıcı olayına ihtiyacınız varsa e.nativeEvent’ten ulaşabilirsiniz.

Özellikler

React olay nesneleri bazı standart Event özelliklerini uygular:

  • bubbles: Bir boolean. Event’in DOM boyunca bubble edip etmediğini return eder.
  • cancelable: Bir boolean. Event’in cancel edilip edilemeyeceğini return eder.
  • currentTarget: Bir DOM node. React tree içinde current handler’ın attach edildiği node’u return eder.
  • defaultPrevented: Bir boolean. preventDefault’un çağrılıp çağrılmadığını return eder.
  • eventPhase: Bir number. Event’in şu anda hangi phase’de olduğunu return eder.
  • isTrusted: Bir boolean. Event’in user tarafından başlatılıp başlatılmadığını return eder.
  • target: Bir DOM node. Event’in gerçekleştiği node’u return eder (bu uzak bir child olabilir).
  • timeStamp: Bir number. Event’in gerçekleştiği zamanı return eder.

Ek olarak, React olay nesneleri şu özellikleri de sağlar:

  • nativeEvent: Bir DOM Event’i. Orijinal tarayıcı olay nesnesidir.

Metotlar

React olay nesneleri bazı standart Event metotlarını uygular:

Ek olarak, React olay nesneleri şu metotları da sağlar:

  • isDefaultPrevented(): preventDefault’un çağırılıp çağırılmadığını gösteren bir boolean döndürür.
  • isPropagationStopped(): stopPropagation’ın çağırılıp çağırılmadığını gösteren bir boolean döndürür.
  • persist(): React DOM’uyla kullanılmaz. React Native’de, olaydan sonra olayın özelliklerine ulaşmak için bunu çağırın.
  • isPersistent(): React DOM’uyla kullanılmaz. React Native’de, persist’in çağırılıp çağırılmadığını döndürür.

Uyarılar

  • currentTarget, eventPhase, target, ve type’ın değerleri React kodunuzun beklediği değerleri yansıtır. React aslında olay yöneticilerini kökte bağlar ama bu React’ın olay nesnelerine yansıtılmaz. Örneğin, e.currentTarget altta yatan e.nativeEvent.currentTarget ile aynı olmayabilir. Polyfill yapılmış olaylarda e.type (React olay tipi), e.nativeEvent.type’tan (altta yatan tip) farklı olabilir.

AnimationEvent yönetici fonksiyonu

CSS animasyonu olayları için bir olay yöneticisi tipi.

<div
onAnimationStart={e => console.log('onAnimationStart')}
onAnimationIteration={e => console.log('onAnimationIteration')}
onAnimationEnd={e => console.log('onAnimationEnd')}
/>

Parametreler


ClipboardEvent yönetici fonksiyonu

Clipboard API olayları için bir olay yöneticisi tipi.

<input
onCopy={e => console.log('onCopy')}
onCut={e => console.log('onCut')}
onPaste={e => console.log('onPaste')}
/>

Parametreler


CompositionEvent yönetici fonksiyonu

Girdi metodu düzenleyicisi (IME) olayları için bir olay yöneticisi tipi.

<input
onCompositionStart={e => console.log('onCompositionStart')}
onCompositionUpdate={e => console.log('onCompositionUpdate')}
onCompositionEnd={e => console.log('onCompositionEnd')}
/>

Parametreler


DragEvent yönetici fonksiyonu

HTML Sürükle ve Bırak API’si olayları için bir olay yöneticisi tipi.

<>
<div
draggable={true}
onDragStart={e => console.log('onDragStart')}
onDragEnd={e => console.log('onDragEnd')}
>
Sürükleme kaynağı
</div>

<div
onDragEnter={e => console.log('onDragEnter')}
onDragLeave={e => console.log('onDragLeave')}
onDragOver={e => { e.preventDefault(); console.log('onDragOver'); }}
onDrop={e => console.log('onDrop')}
>
Bırakma hedefi
</div>
</>

Parametreler


FocusEvent yönetici fonksiyonu

Odaklanma olayları için bir olay yöneticisi tipi.

<input
onFocus={e => console.log('onFocus')}
onBlur={e => console.log('onBlur')}
/>

Şu örneğe göz atın.

Parametreler


Event yönetici fonksiyonu

Genel olaylar için bir olay yöneticisi tipi.

Parametreler


InputEvent yönetici fonksiyonu

onBeforeInput olayı için bir olay yöneticisi tipi.

<input onBeforeInput={e => console.log('onBeforeInput')} />

Parametreler


KeyboardEvent yönetici fonksiyonu

Klavye olayları için bir olay yöneticisi tipi.

<input
onKeyDown={e => console.log('onKeyDown')}
onKeyUp={e => console.log('onKeyUp')}
/>

Şu örneğe göz atın.

Parametreler


MouseEvent yönetici fonksiyonu

Fare olayları için bir olay yöneticisi tipi.

<div
onClick={e => console.log('onClick')}
onMouseEnter={e => console.log('onMouseEnter')}
onMouseOver={e => console.log('onMouseOver')}
onMouseDown={e => console.log('onMouseDown')}
onMouseUp={e => console.log('onMouseUp')}
onMouseLeave={e => console.log('onMouseLeave')}
/>

Şu örneğe göz atın.

Parametreler


PointerEvent yönetici fonksiyonu

İmleç olayları için bir olay yöneticisi tipi.

<div
onPointerEnter={e => console.log('onPointerEnter')}
onPointerMove={e => console.log('onPointerMove')}
onPointerDown={e => console.log('onPointerDown')}
onPointerUp={e => console.log('onPointerUp')}
onPointerLeave={e => console.log('onPointerLeave')}
/>

Şu örneğe göz atın.

Parametreler


TouchEvent yönetici fonksiyonu

Dokunma olayları için bir olay yöneticisi tipi.

<div
onTouchStart={e => console.log('onTouchStart')}
onTouchMove={e => console.log('onTouchMove')}
onTouchEnd={e => console.log('onTouchEnd')}
onTouchCancel={e => console.log('onTouchCancel')}
/>

Parametreler


TransitionEvent yönetici fonksiyonu

CSS geçiş olayları için bir olay yöneticisi tipi.

<div
onTransitionEnd={e => console.log('onTransitionEnd')}
/>

Parametreler


UIEvent yönetici fonksiyonu

Genel UI olayları için bir olay yöneticisi tipi.

<div
onScroll={e => console.log('onScroll')}
/>

Parametreler


WheelEvent yönetici fonksiyonu

onWheel olayı için bir olay yöneticisi tipi.

<div
onWheel={e => console.log('onWheel')}
/>

Parametreler


Kullanım

CSS stillerinin uygulanması

React’ta bir CSS sınıfını className kullanarak belirtirsiniz. HTML’deki class niteliği gibi çalışır:

<img className="avatar" />

Sonra bu sınıf için CSS kurallarını ayrı bir CSS dosyasına yazarsınız:

/* CSS dosyanız */
.avatar {
border-radius: 50%;
}

React, CSS dosyalarını nasıl ekleyeceğinizle ilgili sıkı kurallar koymaz. En basit yol, HTML’inize bir<link> etiketi eklemektir. Eğer bir derleme aracı veya bir framework kullanırsanız, projenize nasıl CSS dosyası ekleyeceğinizi öğrenmek için ilgili dokümantasyona danışabilirsiniz.

Bazen stil değerleri veriye bağlıdır. Dinamik bir şekilde stillendirmek için style niteliğini kullanın:

<img
className="avatar"
style={{
width: user.imageSize,
height: user.imageSize
}}
/>

Yukarıdaki örnekteki style={{}} özel bir söz dizimi değil, style={ } JSX süslü parantezleri içinde yer alan sıradan bir {} nesnesidir. Stilleriniz JavaScript değişkenlerine bağlı olduğunda yalnızca style kullanmanızı öneriyoruz.

export default function Avatar({ user }) {
  return (
    <img
      src={user.imageUrl}
      alt={user.name + ' profil fotoğrafı'}
      className="avatar"
      style={{
        width: user.imageSize,
        height: user.imageSize
      }}
    />
  );
}

Derinlemesine İnceleme

Birden fazla CSS sınıfı koşulsal olarak nasıl uygulanır?

CSS sınıflarını koşulsal olarak uygulamak için className string’ini JavaScript’i kullanarak kendiniz üretmeniz gerekiyor.

Örneğin, className={'row ' + (isSelected ? 'selected': '')}, isSelected’ın true olup olmamasına göre className="row" veya className="row selected" üretecektir.

Bunu daha okunaklı hale getirmek için classnames gibi minik yardımcı bir kütüphane kullanabilirsiniz:

import cn from 'classnames';

function Row({ isSelected }) {
return (
<div className={cn('row', isSelected && 'selected')}>
...
</div>
);
}

Özellikle birden fazla koşulsal sınıfınız varsa kullanışlı oluyor:

import cn from 'classnames';

function Row({ isSelected, size }) {
return (
<div className={cn('row', {
selected: isSelected,
large: size === 'large',
small: size === 'small',
})}>
...
</div>
);
}

Bir DOM düğümünü ref ile manipüle etme

Bazı durumlarda tarayıcıdaki DOM düğümünün JSX’teki bir etiket ile ilişkilendirilmesine ihtiyaç duyacaksınız. Örneğin, eğer bir butona tıkladığınızda bir <input>’a odaklanmak istiyorsanız, tarayıcıdaki <input> DOM düğümünde focus()’u çağırmanız gerekiyor.

Bir etikette, tarayıcıdaki DOM düğümünü elde etmek için, bir ref tanımlayın ve bunu, o etikete ref niteliği olarak verin:

import { useRef } from 'react';

export default function Form() {
const inputRef = useRef(null);
// ...
return (
<input ref={inputRef} />
// ...

React, DOM düğümü ekrana render edildikten sonra onu inputRef.current’ın içine koyacaktır.

import { useRef } from 'react';

export default function Form() {
  const inputRef = useRef(null);

  function handleClick() {
    inputRef.current.focus();
  }

  return (
    <>
      <input ref={inputRef} />
      <button onClick={handleClick}>
        Girdiye odaklan
      </button>
    </>
  );
}

Refs ile DOM manipülasyonu hakkında daha fazla bilgi edinin ve daha fazla örneğe göz atın.

Daha ileri düzey kullanım durumları için ref niteliği ayrıca bir callback fonksiyonu da kabul eder.


İç HTML’i tehlikeli bir şekilde ayarlama

Bir elemana şu şekilde düz bir HTML string’i verebilirsiniz:

const markup = { __html: '<p>düz bir html içeriği</p>' };
return <div dangerouslySetInnerHTML={markup} />;

Bu tehlikelidir. Altta yatan DOM’un innerHTML özelliğinde olduğu gibi, son derece dikkatli kullanmanız gerekir. Eğer ki biçimlendirme (markup) çok güvenilir bir kaynaktan gelmiyorsa, bu şekilde bir XSS zayıflığı oluşturmak gereksizdir.

Örneğin, eğer Markdown’ı HTML’e dönüştüren bir Markdown kütüphanesi kullanıyorsanız, ayrıştırıcısında herhangi bir hata olmadığına güveniyorsanız ve kullanıcı yalnızca kendi girdisini görüyorsa, sonuçta oluşan HTML’i şöyle görüntüleyebilirsiniz:

import { Remarkable } from 'remarkable';

const md = new Remarkable();

function renderMarkdownToHTML(markdown) {
  // Bu yöntem, YALNIZCA sonuçta oluşan HTML
  // aynı kullanıcıya gösterildiği ve Markdown
  // ayrıştırıcısında hata olmadığına
  // emin olduğunuz için güvenlidir.
  const renderedHTML = md.render(markdown);
  return {__html: renderedHTML};
}

export default function MarkdownPreview({ markdown }) {
  const markup = renderMarkdownToHTML(markdown);
  return <div dangerouslySetInnerHTML={markup} />;
}

{__html} nesnesi, yukarıdaki örnekte renderMarkdownToHTML olduğu gibi, HTML’nin oluşturulduğu yere mümkün olduğunca yakın oluşturulmalıdır. Bu, kodunuzda kullanılan tüm ham HTML’nin açıkça bu şekilde işaretlenmesini ve yalnızca HTML içermesini beklediğiniz değişkenlerin dangerouslySetInnerHTML’ye iletilmesini sağlar. Nesnenin satır içi olarak <div dangerouslySetInnerHTML={{__html: markup}} /> gibi oluşturulması önerilmez.

Gelişigüzel HTML’i render etmenin neden tehlikeli olduğunu görmek için yukarıdaki kod yerine şunu koyun:

const post = {
// Bu içeriğin veritabanında saklandığını hayal edelim.
content: `<img src="" onerror='alert("hacklendiniz!!!")'>`
};

export default function MarkdownPreview() {
// 🔴 GÜVENLİK AÇIĞI: dangerouslySetInnerHTML'e güvenilir olmayan girdi veriyorsunuz
const markup = { __html: post.content };
return <div dangerouslySetInnerHTML={markup} />;
}

HTML’de gömülü olan kod çalışacak. Bir hacker, bu güvenlik açığını kullanıcı bilgilerini çalmak veya kendi çıkarları için kullanabilir. dangerouslySetInnerHTML’i yalnızca güvenilir ve temizlenmiş verilerle kullanın.


Fare olaylarını yönetme

Bu örnek bazı yaygın fare olaylarını ve ne zaman çalıştıklarını gösteriyor.

export default function MouseExample() {
  return (
    <div
      onMouseEnter={e => console.log('onMouseEnter (üst eleman)')}
      onMouseLeave={e => console.log('onMouseLeave (üst eleman)')}
    >
      <button
        onClick={e => console.log('onClick (birinci buton)')}
        onMouseDown={e => console.log('onMouseDown (birinci buton)')}
        onMouseEnter={e => console.log('onMouseEnter (birinci buton)')}
        onMouseLeave={e => console.log('onMouseLeave (birinci buton)')}
        onMouseOver={e => console.log('onMouseOver (birinci buton)')}
        onMouseUp={e => console.log('onMouseUp (birinci buton)')}
      >
        Birinci buton
      </button>
      <button
        onClick={e => console.log('onClick (ikinci buton)')}
        onMouseDown={e => console.log('onMouseDown (ikinci buton)')}
        onMouseEnter={e => console.log('onMouseEnter (ikinci buton)')}
        onMouseLeave={e => console.log('onMouseLeave (ikinci buton)')}
        onMouseOver={e => console.log('onMouseOver (ikinci buton)')}
        onMouseUp={e => console.log('onMouseUp (ikinci buton)')}
      >
        İkinci buton
      </button>
    </div>
  );
}


İmleç olaylarını yönetme

Bu örnek bazı yaygın imleç olayarını ve ne zaman çalıştıklarını gösteriyor.

export default function PointerExample() {
  return (
    <div
      onPointerEnter={e => console.log('onPointerEnter (üst eleman)')}
      onPointerLeave={e => console.log('onPointerLeave (üst eleman)')}
      style={{ padding: 20, backgroundColor: '#ddd' }}
    >
      <div
        onPointerDown={e => console.log('onPointerDown (birinci alt eleman)')}
        onPointerEnter={e => console.log('onPointerEnter (birinci alt eleman)')}
        onPointerLeave={e => console.log('onPointerLeave (birinci alt eleman)')}
        onPointerMove={e => console.log('onPointerMove (birinci alt eleman)')}
        onPointerUp={e => console.log('onPointerUp (birinci alt eleman)')}
        style={{ padding: 20, backgroundColor: 'lightyellow' }}
      >
        Birinci alt eleman
      </div>
      <div
        onPointerDown={e => console.log('onPointerDown (ikinci alt eleman)')}
        onPointerEnter={e => console.log('onPointerEnter (ikinci alt eleman)')}
        onPointerLeave={e => console.log('onPointerLeave (ikinci alt eleman)')}
        onPointerMove={e => console.log('onPointerMove (ikinci alt eleman)')}
        onPointerUp={e => console.log('onPointerUp (ikinci alt eleman)')}
        style={{ padding: 20, backgroundColor: 'lightblue' }}
      >
        İkinci alt eleman
      </div>
    </div>
  );
}


Odaklanma olaylarını yönetme

Odaklanma olayları React’ta kabarırlar. Odaklanma ve bulandırma olaylarının üst elemanın dışında oluşup oluşmadığını ayırt etmek için currentTarget ve relatedTarget’i kullanabilirsiniz. Aşağıdaki örnek, bir alt elemana veya üst elemana odaklanmanın ve tüm alt ağaca giren veya çıkan odaklanmaların nasıl tespit edileceğini gösteriyor.

export default function FocusExample() {
  return (
    <div
      tabIndex={1}
      onFocus={(e) => {
        if (e.currentTarget === e.target) {
          console.log('üst elemana odaklanıldı');
        } else {
          console.log(e.target.name, 'alt elemanına odaklanıldı');
        }
        if (!e.currentTarget.contains(e.relatedTarget)) {
          // Alt elemanlar arasındaki odağı değiştirirken tetiklenmez
          console.log('odak üst elemana girdi');
        }
      }}
      onBlur={(e) => {
        if (e.currentTarget === e.target) {
          console.log('üst elemandan odak kaldırıldı');
        } else {
          console.log(e.target.name, 'alt elemanından odak kaldırıldı');
        }
        if (!e.currentTarget.contains(e.relatedTarget)) {
          // Alt elemanlar arasındaki odağı değiştirirken tetiklenmez
          console.log('odak üst elemandan çıktı');
        }
      }}
    >
      <label>
        İsim:
        <input name="isim" />
      </label>
      <label>
        Soyisim:
        <input name="soyisim" />
      </label>
    </div>
  );
}


Klavye olaylarını yönetme

Bu örnek bazı yaygın klavye olaylarını ve ne zaman çalıştıklarını gösteriyor.

export default function KeyboardExample() {
  return (
    <label>
      İsim:
      <input
        name="isim"
        onKeyDown={e => console.log('onKeyDown:', e.key, e.code)}
        onKeyUp={e => console.log('onKeyUp:', e.key, e.code)}
      />
    </label>
  );
}