SyntheticEvent
These docs are old and won’t be updated. Go to react.dev for the new React docs.
These new documentation pages teach modern React and include live examples:
Bu başvuru rehberinde, React Olay Sistemi’nin bir parçasını oluşturan SyntheticEvent
sarmalayıcısı (wrapper) açıklanmaktadır. Daha fazla bigli sahibi olmak için Olay Yönetimi kaynağını inceleyebilirsiniz.
Genel Bakış
Olay yöneticilerinize, tarayıcının kendi olaylarını sarmalayan bir çapraz-tarayıcı SyntheticEvent
nesnesi iletilir. Bu nesne tüm tarayıcılarda aynı şekilde çalışması dışında, stopPropagation()
ve preventDefault()
dahil olmak üzere, tarayıcının kendi olayıyla aynı arabirime sahiptir.
Bir nedenden ötürü esas tarayıcı olayına ihtiyaç duyarsanız, basitçe nativeEvent
özelliğini kullanın. Sentetik olaylar, tarayıcının doğal (native) olaylarından farklıdır ve doğrudan bunlarla eşleşmez. Örneğin, onMouseLeave
‘in içindeki event.nativeEvent
bir mouseout
olayına işaret edecektir. Spesifik eşleme, genel API’nin bir parçası değildir ve herhangi bir zamanda değişebilir. Her SyntheticEvent
nesnesi aşağıdaki özelliklere sahiptir:
boolean bubbles
boolean cancelable
DOMEventTarget currentTarget
boolean defaultPrevented
number eventPhase
boolean isTrusted
DOMEvent nativeEvent
void preventDefault()
boolean isDefaultPrevented()
void stopPropagation()
boolean isPropagationStopped()
void persist()
DOMEventTarget target
number timeStamp
string type
Not:
React 17’den itibaren,
e.persist()
in bir işlevi kalmamıştır. ÇünküSyntheticEvent
artık ortaklanmamaktadır. (event-pooling).
Not:
v0.14 itibariyle, bir olay yöneticisinden
false
döndürmek artık olay yayılımını durdurmayacaktır. Bunun yerine, uygun görüldüğü şekildee.stopPropagation()
ya dae.preventDefault()
manuel olarak tetiklenmelidir.
Desteklenen Olaylar
React olayları normalleştirir ve olaylar bu şekilde farklı tarayıcılarda tutarlı özelliklere sahip olur.
Aşağıdaki olay yöneticileri, balonlanma (bubbling) evresinde bir olay tarafından tetiklenir. Yakalama evresine bir olay yöneticisi kaydetmek için, olay ismine Capture
ilave edin. Örneğin tıklama olayını, yakalama evresinde yönetmek için onClick
kullanmak yerine onClickCapture
kullanın.
- Not Panosu Olayları
- Kompozisyon Olayları
- Klavye Olayları
- Odaklanma Olayları
- Form Olayları
- Genel Olaylar
- Fare Olayları
- İşaretçi Olayları
- Seçme Olayları
- Dokunma Olayları
- Kullanıcı Arayüzü Olayları
- Tekerlek Olayları
- Medya Olayları
- Resim Olayları
- Animasyon Olayları
- Geciş Olayları
- Diğer Olaylar
Kaynak
Not Panosu Olayları
Olay isimleri:
onCopy onCut onPaste
Özellikler:
DOMDataTransfer clipboardData
Kompozisyon Olayları
Olay isimleri:
onCompositionEnd onCompositionStart onCompositionUpdate
Özellikler:
string data
Klavye Olayları
Olay isimleri:
onKeyDown onKeyPress onKeyUp
Özellikler:
boolean altKey
number charCode
boolean ctrlKey
boolean getModifierState(key)
string key
number keyCode
string locale
number location
boolean metaKey
boolean repeat
boolean shiftKey
number which
key
özelliği DOM 3. Seviye Olaylar Belirlemeleri‘nde belgelenen tüm değerleri alabilir.
Odaklanma Olayları
Olay isimleri:
onFocus onBlur
Bu odaklanma olayları sadece form elemanlarında değil, React DOM’daki tüm elemanlarda çalışmaktadır.
Özellikler:
DOMEventTarget relatedTarget
onFocus
The onFocus
event is called when the element (or some element inside of it) receives focus. For example, it’s called when the user clicks on a text input.
function Example() {
return (
<input
onFocus={(e) => {
console.log('Focused on input');
}}
placeholder="onFocus is triggered when you click this input."
/>
)
}
onBlur
The onBlur
event handler is called when focus has left the element (or left some element inside of it). For example, it’s called when the user clicks outside of a focused text input.
function Example() {
return (
<input
onBlur={(e) => {
console.log('Triggered because this input lost focus');
}}
placeholder="onBlur is triggered when you click this input and then you click outside of it."
/>
)
}
Detecting Focus Entering and Leaving
You can use the currentTarget
and relatedTarget
to differentiate if the focusing or blurring events originated from outside of the parent element. Here is a demo you can copy and paste that shows how to detect focusing a child, focusing the element itself, and focus entering or leaving the whole subtree.
function Example() {
return (
<div
tabIndex={1}
onFocus={(e) => {
if (e.currentTarget === e.target) {
console.log('focused self');
} else {
console.log('focused child', e.target);
}
if (!e.currentTarget.contains(e.relatedTarget)) {
// Not triggered when swapping focus between children
console.log('focus entered self');
}
}}
onBlur={(e) => {
if (e.currentTarget === e.target) {
console.log('unfocused self');
} else {
console.log('unfocused child', e.target);
}
if (!e.currentTarget.contains(e.relatedTarget)) {
// Not triggered when swapping focus between children
console.log('focus left self');
}
}}
>
<input id="1" />
<input id="2" />
</div>
);
}
Form Olayları
Olay isimleri:
onChange onInput onInvalid onReset onSubmit
onChage olayı ile ilgili daha fazla bilgi için Formlar‘ı inceleyin.
Genel Olaylar
Olay isimleri:
onError onLoad
Fare Olayları
Olay isimleri:
onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit
onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave
onMouseMove onMouseOut onMouseOver onMouseUp
onMouseEnter
ve onMouseLeave
olayları, olağan balonlanma yerine bırakılan elemandan girilen elemana doğru yayılırlar ve yakalama evreleri yoktur.
Özellikler:
boolean altKey
number button
number buttons
number clientX
number clientY
boolean ctrlKey
boolean getModifierState(key)
boolean metaKey
number pageX
number pageY
DOMEventTarget relatedTarget
number screenX
number screenY
boolean shiftKey
İşaretçi Olayları
Olay isimleri:
onPointerDown onPointerMove onPointerUp onPointerCancel onGotPointerCapture
onLostPointerCapture onPointerEnter onPointerLeave onPointerOver onPointerOut
onMouseEnter
ve onMouseLeave
olayları, olağan balonlanma yerine bırakılan elemandan girilen elemana doğru yayılırlar ve yakalama evreleri yoktur.
Özellikler:
W3 belirlemeleri‘nde tanımlandığı üzere, işaretçi olayları Fare Olayları‘nı aşağıdaki özellikler ile genişletir.
number pointerId
number width
number height
number pressure
number tangentialPressure
number tiltX
number tiltY
number twist
string pointerType
boolean isPrimary
Çapraz-tarayıcı desteği üzerine bir not:
İşaretçi olayları henüz tüm tarayıcılarda desteklenmemektedir (Bu makalenin yazıldığı tarihte destekleyen tarayıcılar: Chrome, Firefox, Edge ve Internet Explorer). React, react-dom
paket boyutunun önemli bit ölçüde artmaması için kasıtlı olarak diğer tarayıcılar için polyfill desteği sunmamaktadır.
Eğer uygulamanızda işaretçi olaylarına ihtiyaç duyarsanız, üçüncü parti bir işaretçi olay polyfill’i kullanmanızı öneririz.
Seçme Olayları
Olay isimleri:
onSelect
Dokunma Olayları
Olay isimleri:
onTouchCancel onTouchEnd onTouchMove onTouchStart
Özellikler:
boolean altKey
DOMTouchList changedTouches
boolean ctrlKey
boolean getModifierState(key)
boolean metaKey
boolean shiftKey
DOMTouchList targetTouches
DOMTouchList touches
Kullanıcı Arayüzü Olayları
Olay isimleri:
onScroll
Not
React 17’den başlayarak,
onScroll
olayı balonlanma (bubbling) oluşturmaz. Bu, tarayıcı davranışıyla eşleşir ve iç içe yapıdaki kaydırılabilir bir öğe uzakta bulunan bir üst elemanda olayları (events) tetiklediğinde karışıklığı önler.
Özellikler:
number detail
DOMAbstractView view
Tekerlek Olayları
Olay isimleri:
onWheel
Özellikler:
number deltaMode
number deltaX
number deltaY
number deltaZ
Medya Olayları
Olay isimleri:
onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted
onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay
onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend
onTimeUpdate onVolumeChange onWaiting
Resim Olayları
Olay isimleri:
onLoad onError
Animasyon Olayları
Olay isimleri:
onAnimationStart onAnimationEnd onAnimationIteration
Özellikler:
string animationName
string pseudoElement
float elapsedTime
Geçiş Olayları
Olay isimleri:
onTransitionEnd
Özellikler:
string propertyName
string pseudoElement
float elapsedTime
Diğer Olaylar
Olay isimleri:
onToggle