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>) refcallback fonksiyonu- React olay nesnesi
AnimationEventyönetici fonksiyonuClipboardEventyönetici fonksiyonuCompositionEventyönetici fonksiyonuDragEventyönetici fonksiyonuFocusEventyönetici fonksiyonuEventyönetici fonksiyonuInputEventyönetici fonksiyonuKeyboardEventyönetici fonksiyonuMouseEventyönetici fonksiyonuPointerEventyönetici fonksiyonuTouchEventyönetici fonksiyonuTransitionEventyönetici fonksiyonuUIEventyönetici fonksiyonuWheelEventyönetici fonksiyonu
- Ortak bileşenler (örn.
- Kullanım
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,undefinedve 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,childrenprop’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üninnerHTMLö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.dangerouslySetInnerHTMLkullanımıyla ilgili daha fazlasını okuyun. -
ref:useRefveyacreateRef’ten bir ref nesnesi, veyarefcallback 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ğertrueise, hemchildrenhem decontentEditable={true}prop’larına sahip olan elemanlarda (ki bunlar normalde birlikte çalışmazlar) React’ın gösterdiği uyarıları baskılar. Bunu,contentEditableiç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ğersuppressHydrationWarning’itrueolarak 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’unstyleözelliğine benzer olarak, CSS özellik isimlericamelCaseolarak yazılmalıdır, örneğinfont-weightyerinefontWeight. 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 olarakpx(“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 iseclassNameile düz CSS sınıfları uygulamak daha verimli.classNameandstyleile 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.trueise 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ğindata-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.forHTML 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 bunuuseIdile 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: BirAnimationEventhandler function’ı. Bir CSS animation tamamlandığında fire olur.onAnimationEndCapture:onAnimationEnd’in capture phase’de fire olan bir versiyonu.onAnimationIteration: BirAnimationEventhandler 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: BirAnimationEventhandler function’ı. Bir CSS animation başladığında fire olur.onAnimationStartCapture:onAnimationStart, ancak capture phase’de fire olur.onAuxClick: BirMouseEventhandler function’ı. Primary olmayan pointer button’a click edildiğinde fire olur.onAuxClickCapture:onAuxClick’in capture phase’de fire olan bir versiyonu.onBeforeInput: BirInputEventhandler function’ı. Editable bir element’in value’su değiştirilmeden önce fire olur. React henüz nativebeforeinputevent’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: BirFocusEventhandler function’ı. Bir element focus’u kaybettiğinde fire olur. Built-in browserblurevent’inin aksine, React’teonBlurevent’i bubble eder.onBlurCapture:onBlur’un capture phase’de fire olan bir versiyonu.onClick: BirMouseEventhandler function’ı. Pointing device üzerindeki primary button’a click edildiğinde fire olur.onClickCapture:onClick’in capture phase’de fire olan bir versiyonu.onCompositionStart: BirCompositionEventhandler 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: BirCompositionEventhandler 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: BirCompositionEventhandler function’ı. Bir input method editor yeni bir character aldığında fire olur.onCompositionUpdateCapture:onCompositionUpdate’in capture phase’de fire olan bir versiyonu.onContextMenu: BirMouseEventhandler function’ı. User bir context menu açmaya çalıştığında fire olur.onContextMenuCapture:onContextMenu’nün capture phase’de fire olan bir versiyonu.onCopy: BirClipboardEventhandler function’ı. User clipboard’a bir şey copy etmeye çalıştığında fire olur.onCopyCapture:onCopy’nin capture phase’de fire olan bir versiyonu.onCut: BirClipboardEventhandler function’ı. User clipboard’a bir şey cut etmeye çalıştığında fire olur.onCutCapture:onCut’ın capture phase’de fire olan bir versiyonu.onDoubleClick: BirMouseEventhandler function’ı. User iki kez click ettiğinde fire olur. Browserdblclickevent’ine karşılık gelir.onDoubleClickCapture:onDoubleClick’in capture phase’de fire olan bir versiyonu.onDrag: BirDragEventhandler function’ı. User bir şeyi drag ederken fire olur.onDragCapture:onDrag’in capture phase’de fire olan bir versiyonu.onDragEnd: BirDragEventhandler function’ı. User bir şeyi drag etmeyi bıraktığında fire olur.onDragEndCapture:onDragEnd’in capture phase’de fire olan bir versiyonu.onDragEnter: BirDragEventhandler 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: BirDragEventhandler function’ı. Drag edilen content geçerli bir drop target üzerinde drag edilirken fire olur. Drop’a izin vermek için buradae.preventDefault()çağırmalısınız.onDragOverCapture:onDragOver’ın capture phase’de fire olan bir versiyonu.onDragStart: BirDragEventhandler function’ı. User bir element’i drag etmeye başladığında fire olur.onDragStartCapture:onDragStart’ın capture phase’de fire olan bir versiyonu.onDrop: BirDragEventhandler 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: BirFocusEventhandler function’ı. Bir element focus aldığında fire olur. Built-in browserfocusevent’inin aksine, React’teonFocusevent’i bubble eder.onFocusCapture:onFocus’un capture phase’de fire olan bir versiyonu.onGotPointerCapture: BirPointerEventhandler function’ı. Bir element programmatically bir pointer’ı capture ettiğinde fire olur.onGotPointerCaptureCapture:onGotPointerCapture’ın capture phase’de fire olan bir versiyonu.onKeyDown: BirKeyboardEventhandler function’ı. Bir key basıldığında fire olur.onKeyDownCapture:onKeyDown’ın capture phase’de fire olan bir versiyonu.onKeyPress: BirKeyboardEventhandler function’ı. Deprecated. Bunun yerineonKeyDownveyaonBeforeInputkullanın.onKeyPressCapture:onKeyPress’in capture phase’de fire olan bir versiyonu.onKeyUp: BirKeyboardEventhandler function’ı. Bir key bırakıldığında fire olur.onKeyUpCapture:onKeyUp’ın capture phase’de fire olan bir versiyonu.onLostPointerCapture: BirPointerEventhandler function’ı. Bir element bir pointer’ı capture etmeyi bıraktığında fire olur.onLostPointerCaptureCapture:onLostPointerCapture’ın capture phase’de fire olan bir versiyonu.onMouseDown: BirMouseEventhandler function’ı. Pointer basıldığında fire olur.onMouseDownCapture:onMouseDown’ın capture phase’de fire olan bir versiyonu.onMouseEnter: BirMouseEventhandler function’ı. Pointer bir element’in içine hareket ettiğinde fire olur. Capture phase’i yoktur. Bunun yerine,onMouseLeaveveonMouseEnter, çıkılan element’ten girilen element’e doğru propagate eder.onMouseLeave: BirMouseEventhandler function’ı. Pointer bir element’in dışına hareket ettiğinde fire olur. Capture phase’i yoktur. Bunun yerine,onMouseLeaveveonMouseEnter, çıkılan element’ten girilen element’e doğru propagate eder.onMouseMove: BirMouseEventhandler function’ı. Pointer koordinat değiştirdiğinde fire olur.onMouseMoveCapture:onMouseMove’un capture phase’de fire olan bir versiyonu.onMouseOut: BirMouseEventhandler 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: BirMouseEventhandler function’ı. Pointer bırakıldığında fire olur.onMouseUpCapture:onMouseUp’ın capture phase’de fire olan bir versiyonu.onPointerCancel: BirPointerEventhandler function’ı. Browser bir pointer interaction’ı iptal ettiğinde fire olur.onPointerCancelCapture:onPointerCancel’ın capture phase’de fire olan bir versiyonu.onPointerDown: BirPointerEventhandler function’ı. Bir pointer active olduğunda fire olur.onPointerDownCapture:onPointerDown’ın capture phase’de fire olan bir versiyonu.onPointerEnter: BirPointerEventhandler function’ı. Bir pointer bir element’in içine hareket ettiğinde fire olur. Capture phase’i yoktur. Bunun yerine,onPointerLeaveveonPointerEnter, çıkılan element’ten girilen element’e doğru propagate eder.onPointerLeave: BirPointerEventhandler function’ı. Bir pointer bir element’in dışına hareket ettiğinde fire olur. Capture phase’i yoktur. Bunun yerine,onPointerLeaveveonPointerEnter, çıkılan element’ten girilen element’e doğru propagate eder.onPointerMove: BirPointerEventhandler function’ı. Bir pointer koordinat değiştirdiğinde fire olur.onPointerMoveCapture:onPointerMove’un capture phase’de fire olan bir versiyonu.onPointerOut: BirPointerEventhandler 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: BirPointerEventhandler function’ı. Bir pointer artık active olmadığında fire olur.onPointerUpCapture:onPointerUp’ın capture phase’de fire olan bir versiyonu.onPaste: BirClipboardEventhandler function’ı. User clipboard’dan bir şey paste etmeye çalıştığında fire olur.onPasteCapture:onPaste’in capture phase’de fire olan bir versiyonu.onScroll: BirEventhandler function’ı. Bir element scrolled olduğunda fire olur. Bu event bubble etmez.onScrollCapture:onScroll’un capture phase’de fire olan bir versiyonu.onSelect: BirEventhandler function’ı. Input gibi editable bir element içindeki selection değiştikten sonra fire olur. React,onSelectevent’inicontentEditable={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: BirTouchEventhandler function’ı. Browser bir touch interaction’ı iptal ettiğinde fire olur.onTouchCancelCapture:onTouchCancel’ın capture phase’de fire olan bir versiyonu.onTouchEnd: BirTouchEventhandler function’ı. Bir veya daha fazla touch point kaldırıldığında fire olur.onTouchEndCapture:onTouchEnd’in capture phase’de fire olan bir versiyonu.onTouchMove: BirTouchEventhandler function’ı. Bir veya daha fazla touch point hareket ettirildiğinde fire olur.onTouchMoveCapture:onTouchMove’un capture phase’de fire olan bir versiyonu.onTouchStart: BirTouchEventhandler function’ı. Bir veya daha fazla touch point yerleştirildiğinde fire olur.onTouchStartCapture:onTouchStart’ın capture phase’de fire olan bir versiyonu.onTransitionEnd: BirTransitionEventhandler function’ı. Bir CSS transition tamamlandığında fire olur.onTransitionEndCapture:onTransitionEnd’in capture phase’de fire olan bir versiyonu.onWheel: BirWheelEventhandler 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çatrueveyafalseolarak set edilirse, spellchecking’i etkinleştirir veya devre dışı bırakır.tabIndex: Bir number. Default Tab button behavior’ını override eder.-1ve0dışı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:
onReset: BirEventyönetici fonksiyonu. Form sıfırlanınca çalışır.onResetCapture:onReset’in yakalama aşamasında çalışan versiyonu.onSubmit: BirEventyönetici fonksiyonu. Form gönderilince çalışır.onSubmitCapture:onSubmit’in yakalama aşamasında çalışan versiyonu.
Şu olaylar yalnızca <dialog> elemanlarında çalışır. Tarayıcı olaylarının aksine, bunlar React’ta kabarırlar:
onCancel: BirEventyönetici fonksiyonu. Kullanıcı diyaloğu kapatmayı deneyince çalışır.onCancelCapture:onCancel’ın yakalama aşamasında çalışan versiyonu.onClose: BirEventyönetici fonksiyonu. Diyalog kapatılınca çalışır.onCloseCapture:onClose’un yakalama aşamasında çalışan versiyonu.
Şu olaylar yalnızca <details> elemanlarında çalışır. Tarayıcı olaylarının aksine, bunlar React’ta kabarırlar:
onToggle: BirEventyönetici fonksiyonu. Kullanıcı detayların aç-kapa modları arasında geçiş yapınca çalışır.onToggleCapture:onToggle’ın yakalama aşamasında çalışan versiyonu.
Ş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:
onLoad: BirEventyönetici fonksiyonu. Kaynak yüklenince çalışır.onLoadCapture:onLoad’un yakalama aşamasında çalışan versiyonu.onError: BirEventyönetici fonksiyonu. Kaynak yüklenemeyince çalışır.onErrorCapture:onError’ın yakalama aşamasında çalışan versiyonu.
Şu olaylar <audio> ve <video> gibi kaynaklarda çalışır. Tarayıcı olaylarının aksine, bunlar React’ta kabarırlar:
onAbort: BirEventyönetici fonksiyonu. Kaynak bir hatayla karşılaşmamasına rağmen tam olarak yüklenmediğinde çalışır.onAbortCapture:onAbort’un yakalama aşamasında çalışan versiyonu.onCanPlay: BirEventyönetici fonksiyonu. Oynatmaya başlamak için yeterince veri olup, arabelleğe almadan sonuna kadar oynatmaya yetecek kadar veri olmadığı zaman çalışır.onCanPlayCapture:onCanPlay’in yakalama aşamasında çalışan versiyonu.onCanPlayThrough: BirEventyönetici fonksiyonu. Arabelleğe almadan sonuna kadar oynatmayı mümkün kılacak kadar veri olduğu zaman çalışır.onCanPlayThroughCapture:onCanPlayThrough’nun yakalama aşamasında çalışan versiyonu.onDurationChange: BirEventyönetici fonksiyonu. Medya süresi güncellenince çalışır.onDurationChangeCapture:onDurationChange’in yakalama aşamasında çalışan versiyonu.onEmptied: BirEventyönetici fonksiyonu. Medya boşaltılınca çalışır.onEmptiedCapture:onEmptied’in yakalama aşamasında çalışan versiyonu.onEncrypted: BirEventyönetici fonksiyonu. Tarayıcı şifrelenmiş bir medyayla karşılaşınca çalışır.onEncryptedCapture:onEncrypted’ın yakalama aşamasında çalışan versiyonu.onEnded: BirEventyönetici fonksiyonu. Oynatacak bir şey kalmadığı için oynatma durunca çalışır.onEndedCapture:onEnded’ın yakalama aşamasında çalışan versiyonu.onError: BirEventyönetici fonksiyonu. Kaynak yüklenemeyince çalışır.onErrorCapture:onError’ın yakalama aşamasında çalışan versiyonu.onLoadedData: BirEventyönetici fonksiyonu. Mevcut oynatma çerçevesi yüklenince çalışır.onLoadedDataCapture:onLoadedData’nın yakalama aşamasında çalışan versiyonu.onLoadedMetadata: BirEventyönetici fonksiyonu. Üstveri yüklenince çalışır.onLoadedMetadataCapture:onLoadedMetadata’nın yakalama aşamasında çalışan versiyonu.onLoadStart: BirEventyönetici fonksiyonu. Tarayıcı, kaynağı yüklemeye başlayınca çalışır.onLoadStartCapture:onLoadStart’ın yakalama aşamasında çalışan versiyonu.onPause: BirEventyönetici fonksiyonu. Medya duraklatılınca çalışır.onPauseCapture:onPause’un yakalama aşamasında çalışan versiyonu.onPlay: BirEventyönetici fonksiyonu. Medya duraklatmadan çıkınca çalışır.onPlayCapture:onPlay’in yakalama aşamasında çalışan versiyonu.onPlaying: BirEventyönetici fonksiyonu. Medya çalmaya başlayınca veya baştan başlayınca çalışır.onPlayingCapture:onPlaying’in yakalama aşamasında çalışan versiyonu.onProgress: BirEventyönetici fonksiyonu. Kaynak yüklenirken aralıklı olarak çalışır.onProgressCapture:onProgress’in yakalama aşamasında çalışan versiyonu.onRateChange: BirEventyönetici fonksiyonu. Çalma hızı değişince çalışır.onRateChangeCapture:onRateChange’in yakalama aşamasında çalışan versiyonu.onResize: BirEventyönetici fonksiyonu. Video boyutu değişince çalışır.onResizeCapture:onResize’ın yakalama aşamasında çalışan versiyonu.onSeeked: BirEventyönetici fonksiyonu. Arama (seeking) işlemi tamamlanınca çalışır.onSeekedCapture:onSeeked’in yakalama aşamasında çalışan versiyonu.onSeeking: BirEventyönetici fonksiyonu. Arama (seeking) işlemi başlayınca çalışır.onSeekingCapture:onSeeking’in yakalama aşamasında çalışan versiyonu.onStalled: BirEventyönetici fonksiyonu. Tarayıcı veri beklerken takılı kalınca çalışır.onStalledCapture:onStalled’un yakalama aşamasında çalışan versiyonu.onSuspend: BirEventyönetici fonksiyonu. Kaynak yükleme asılı kalınca çalışır.onSuspendCapture:onSuspend’in yakalama aşamasında çalışan versiyonu.onTimeUpdate: BirEventyönetici fonksiyonu. Mevcut oynatma zamanı güncellenince çalışır.onTimeUpdateCapture:onTimeUpdate’in yakalama aşamasında çalışan versiyonu.onVolumeChange: BirEventyönetici fonksiyonu. Videonun sesi değişince çalışır.onVolumeChangeCapture:onVolumeChange’in yakalama aşamasında çalışan versiyonu.onWaiting: BirEventyönetici fonksiyonu. Oynatma geçici veri eksikliğinden dolayı durunca çalışır.onWaitingCapture:onWaiting’in yakalama aşamasında çalışan versiyonu.
Uyarılar
- Aynı anda hem
childrenhem dedangerouslySetInnerHTMLkullanamazsınız. - Bazı olaylar (
onAbortveonLoadgibi) 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ü.refeklenirken, React size DOM düğümünü iletecektir. Her render işleminderefgeri ç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.
Döndürülenler
- isteğe bağlı
temizlik fonksiyonu:refayrıldığında, React temizlik fonksiyonunu çağıracaktır. Eğerrefgeri çağırmasından bir fonksiyon döndürülmezse, React,refayrıldığında geri çağırmayı tekrarnullparametresiyle ç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
refgeri ç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,refgeri çağırmasınullparametresiyle ç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 DOMEvent’i. Orijinal tarayıcı olay nesnesidir.
Metotlar
React olay nesneleri bazı standart Event metotlarını uygular:
preventDefault(): Olay için varsayılan tarayıcı aksiyonunu engeller.stopPropagation(): Olayın React ağacı boyunca yayılmasını durdurur.
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, vetype’ı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.currentTargetaltta yatane.nativeEvent.currentTargetile aynı olmayabilir. Polyfill yapılmış olaylardae.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
e: Şu ekstraAnimationEventözelliklerine sahip olan bir React olay nesnesi:
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
-
e: Şu ekstraClipboardEventözelliklerine sahip olan bir React olay nesnesi:
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
e: Şu ekstraCompositionEventözelliklerine sahip olan bir React olay nesnesi:
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
-
e: Şu ekstraDragEventözelliklerine sahip olan bir React olay nesnesi:Ayrıca kalıtılmış
MouseEventözellikleri de buna dahildir:altKeybuttonbuttonsctrlKeyclientXclientYgetModifierState(key)metaKeymovementXmovementYpageXpageYrelatedTargetscreenXscreenYshiftKey
Ayrıca kalıtılmış
UIEventözellikleri de buna dahildir:
FocusEvent yönetici fonksiyonu
Odaklanma olayları için bir olay yöneticisi tipi.
<input
onFocus={e => console.log('onFocus')}
onBlur={e => console.log('onBlur')}
/>Parametreler
-
e: Şu ekstraFocusEventözelliklerine sahip olan bir React olay nesnesi:Ayrıca kalıtılmış
UIEventözellikleri de buna dahildir:
Event yönetici fonksiyonu
Genel olaylar için bir olay yöneticisi tipi.
Parametreler
e: Ek özellikleri olmayan bir React olay nesnesi.
InputEvent yönetici fonksiyonu
onBeforeInput olayı için bir olay yöneticisi tipi.
<input onBeforeInput={e => console.log('onBeforeInput')} />Parametreler
e: Şu ekstraInputEventözelliklerine sahip olan bir React olay nesnesi:
KeyboardEvent yönetici fonksiyonu
Klavye olayları için bir olay yöneticisi tipi.
<input
onKeyDown={e => console.log('onKeyDown')}
onKeyUp={e => console.log('onKeyUp')}
/>Parametreler
-
e: Şu ekstraKeyboardEventözelliklerine sahip olan bir React olay nesnesi:altKeycharCodecodectrlKeygetModifierState(key)keykeyCodelocalemetaKeylocationrepeatshiftKeywhich
Ayrıca kalıtılmış
UIEventözellikleri de buna dahildir:
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')}
/>Parametreler
-
e: Şu ekstraMouseEventözelliklerine sahip olan bir React olay nesnesi:altKeybuttonbuttonsctrlKeyclientXclientYgetModifierState(key)metaKeymovementXmovementYpageXpageYrelatedTargetscreenXscreenYshiftKey
Ayrıca kalıtılmış
UIEventözellikleri de buna dahildir:
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')}
/>Parametreler
-
e: Şu ekstraPointerEventözelliklerine sahip olan bir React olay nesnesi:Ayrıca kalıtılmış
MouseEventözellikleri de buna dahildir:altKeybuttonbuttonsctrlKeyclientXclientYgetModifierState(key)metaKeymovementXmovementYpageXpageYrelatedTargetscreenXscreenYshiftKey
Ayrıca kalıtılmış
UIEventözellikleri de buna dahildir:
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
-
e: Şu ekstraTouchEventözelliklerine sahip olan bir React olay nesnesi:Ayrıca inherited
UIEventproperty’lerini de içerir:
TransitionEvent yönetici fonksiyonu
CSS geçiş olayları için bir olay yöneticisi tipi.
<div
onTransitionEnd={e => console.log('onTransitionEnd')}
/>Parametreler
e: Şu ekstraTransitionEventözelliklerine sahip olan bir React olay nesnesi:
UIEvent yönetici fonksiyonu
Genel UI olayları için bir olay yöneticisi tipi.
<div
onScroll={e => console.log('onScroll')}
/>Parametreler
e: Şu ekstraUIEventözelliklerine sahip olan bir React olay nesnesi:
WheelEvent yönetici fonksiyonu
onWheel olayı için bir olay yöneticisi tipi.
<div
onWheel={e => console.log('onWheel')}
/>Parametreler
-
e: Şu ekstraWheelEventözelliklerine sahip olan bir React olay nesnesi:Ayrıca kalıtılmış
MouseEventözellikleri de buna dahildir:altKeybuttonbuttonsctrlKeyclientXclientYgetModifierState(key)metaKeymovementXmovementYpageXpageYrelatedTargetscreenXscreenYshiftKey
Ayrıca kalıtılmış
UIEventözellikleri de buna dahildir:
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
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> ); }