ডোম ইভেন্টের ক্রম অনুসারে: ক্যাপচারিং বনাম বুবলিংগ
ইভেন্টগুলি কীভাবে প্রচার করে তার জন্য দুটি পর্যায়ে রয়েছে। এগুলিকে "ক্যাপচারিং" এবং "বুদবুদ" বলা হয় ।
| | / \
---------------| |----------------- ---------------| |-----------------
| element1 | | | | element1 | | |
| -----------| |----------- | | -----------| |----------- |
| |element2 \ / | | | |element2 | | | |
| ------------------------- | | ------------------------- |
| Event CAPTURING | | Event BUBBLING |
----------------------------------- -----------------------------------
ক্যাপচারিং স্টেজটি প্রথমে ঘটে এবং তারপরে বুদবুদ পর্যায়টি অনুসরণ করা হয়। আপনি যখন নিয়মিত ডিওএম এপি ব্যবহার করে কোনও ইভেন্ট নিবন্ধভুক্ত করেন, ইভেন্টগুলি ডিফল্টরূপে বুদবুদ পর্যায়ের অংশ হয়ে উঠবে তবে ইভেন্টটি তৈরির পরে এটি নির্দিষ্ট করা যেতে পারে event
// CAPTURING event
button.addEventListener('click', handleClick, true)
// BUBBLING events
button.addEventListener('click', handleClick, false)
button.addEventListener('click', handleClick)
প্রতিক্রিয়া হিসাবে, বুদবুদ ঘটনাগুলি আপনি ডিফল্টরূপে ব্যবহার করেন।
// handleClick is a BUBBLING (synthetic) event
<button onClick={handleClick}></button>
// handleClick is a CAPTURING (synthetic) event
<button onClickCapture={handleClick}></button>
আসুন আমাদের হ্যান্ডেল ক্লিক কলব্যাকের ভিতরে একবার দেখে নিন (প্রতিক্রিয়া):
function handleClick(e) {
// This will prevent any synthetic events from firing after this one
e.stopPropagation()
}
function handleClick(e) {
// This will set e.defaultPrevented to true
// (for all synthetic events firing after this one)
e.preventDefault()
}
একটি বিকল্প যা আমি এখানে উল্লেখ করে দেখিনি
আপনি যদি আপনার সমস্ত ইভেন্টে e.preventDefault () কল করেন তবে আপনি কোনও ইভেন্ট ইতিমধ্যে পরিচালনা করা হয়েছে কিনা তা পরীক্ষা করে দেখতে পারেন এবং এটিকে আবার পরিচালনা করা থেকে বিরত রাখতে পারেন:
handleEvent(e) {
if (e.defaultPrevented) return // Exits here if event has been handled
e.preventDefault()
// Perform whatever you need to here.
}
সিন্থেটিক ইভেন্ট এবং নেটিভ ইভেন্টের মধ্যে পার্থক্যের জন্য প্রতিক্রিয়া ডকুমেন্টেশন দেখুন: https://reactjs.org/docs/events.html