Vue.js-এ কম্পোনেন্টগুলো একে অপরের সাথে যোগাযোগ করতে বিভিন্ন পদ্ধতি ব্যবহার করতে পারে। এর মধ্যে দুটি জনপ্রিয় পদ্ধতি হল ইভেন্ট ইমিট (Event Emit) এবং প্রপস (Props) এর মাধ্যমে ডেটা পাস করা। তবে যখন কম্পোনেন্টগুলো একটি নির্দিষ্ট ইন্টারঅ্যাকশন বা তথ্য আদান-প্রদান করতে চায়, তখন ইভেন্ট ইমিট খুবই গুরুত্বপূর্ণ ভূমিকা পালন করে। নিচে ইভেন্ট ইমিট এবং কম্পোনেন্ট কমিউনিকেশনের বিভিন্ন পদ্ধতির ব্যাখ্যা দেওয়া হলো।
১. ইভেন্ট ইমিট (Event Emit)
Vue.js-এ একটি কম্পোনেন্ট থেকে আরেকটি কম্পোনেন্টে তথ্য পাঠানোর একটি পদ্ধতি হল ইভেন্ট ইমিট। এটি সাধারণত প্যারেন্ট কম্পোনেন্ট এবং চাইল্ড কম্পোনেন্টের মধ্যে কমিউনিকেশনের জন্য ব্যবহৃত হয়।
প্যারেন্ট-চাইল্ড কম্পোনেন্টে ইভেন্ট ইমিট ব্যবহার:
- চাইল্ড কম্পোনেন্ট প্যারেন্ট কম্পোনেন্টের কাছে ইভেন্ট পাঠায়।
- প্যারেন্ট কম্পোনেন্ট ইভেন্ট লিসেন করে এবং এর সাথে কোনো একশন যুক্ত করে।
চাইল্ড কম্পোনেন্টে ইভেন্ট ইমিট করা
চাইল্ড কম্পোনেন্ট থেকে প্যারেন্ট কম্পোনেন্টে ইভেন্ট পাঠানোর জন্য this.$emit() ব্যবহার করা হয়। this.$emit() ফাংশনটি একটি ইভেন্ট ট্রিগার করে এবং অতিরিক্ত ডেটা প্যারেন্ট কম্পোনেন্টে পাঠায়।
উদাহরণ:
ChildComponent.vue (চাইল্ড কম্পোনেন্ট)
<template>
<button @click="sendMessage">Send Message</button>
</template>
<script>
export default {
methods: {
sendMessage() {
// ইভেন্ট ইমিট করা এবং ডেটা পাস করা
this.$emit('messageSent', 'Hello from Child!');
}
}
}
</script>
এখানে, this.$emit('messageSent', 'Hello from Child!') কমান্ডটি একটি messageSent ইভেন্ট ইমিট করে এবং "Hello from Child!" নামক একটি মেসেজ প্যারেন্ট কম্পোনেন্টে পাঠায়।
প্যারেন্ট কম্পোনেন্টে ইভেন্ট লিসেন করা
প্যারেন্ট কম্পোনেন্টে ইভেন্টটি লিসেন করার জন্য v-on ডিরেকটিভ ব্যবহার করা হয়। যখন চাইল্ড কম্পোনেন্ট ইভেন্টটি ইমিট করবে, প্যারেন্ট কম্পোনেন্টে তার প্রতিক্রিয়া নির্ধারণ করা হবে।
উদাহরণ:
ParentComponent.vue (প্যারেন্ট কম্পোনেন্ট)
<template>
<div>
<ChildComponent @messageSent="handleMessage"/>
<p>{{ message }}</p>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue'
export default {
components: {
ChildComponent
},
data() {
return {
message: ''
};
},
methods: {
handleMessage(payload) {
this.message = payload;
}
}
}
</script>
এখানে, <ChildComponent @messageSent="handleMessage"/> প্যারেন্ট কম্পোনেন্টে ইভেন্টের জন্য লিসেন করে। যখন চাইল্ড কম্পোনেন্ট messageSent ইভেন্ট ইমিট করে, প্যারেন্ট কম্পোনেন্টের handleMessage মেথডটি কল হয় এবং প্যারেন্ট কম্পোনেন্টের message ডেটা আপডেট হয়।
২. প্রপস (Props)
কম্পোনেন্টগুলির মধ্যে ডেটা শেয়ার করার আরেকটি উপায় হল প্রপস। প্রপস হল একটি মেকানিজম যার মাধ্যমে প্যারেন্ট কম্পোনেন্ট চাইল্ড কম্পোনেন্টে ডেটা পাঠাতে পারে।
প্রপস ব্যবহার:
- প্যারেন্ট কম্পোনেন্ট থেকে চাইল্ড কম্পোনেন্টে ডেটা প্রপস হিসেবে পাঠানো হয়।
- চাইল্ড কম্পোনেন্ট সেই ডেটাকে প্রপস হিসেবে গ্রহণ করে এবং ব্যবহার করে।
উদাহরণ:
ParentComponent.vue (প্যারেন্ট কম্পোনেন্ট)
<template>
<div>
<ChildComponent :message="parentMessage"/>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue'
export default {
components: {
ChildComponent
},
data() {
return {
parentMessage: 'Hello from Parent!'
};
}
}
</script>
এখানে, :message="parentMessage" এর মাধ্যমে প্যারেন্ট কম্পোনেন্টের parentMessage ডেটা চাইল্ড কম্পোনেন্টে প্রপস হিসেবে পাঠানো হচ্ছে।
ChildComponent.vue (চাইল্ড কম্পোনেন্ট)
<template>
<div>
<p>{{ message }}</p>
</div>
</template>
<script>
export default {
props: ['message']
}
</script>
এখানে, চাইল্ড কম্পোনেন্ট message প্রপস গ্রহণ করছে এবং এটি টেমপ্লেটে প্রদর্শিত হচ্ছে।
৩. কম্পোনেন্টস কমিউনিকেশন প্যাটার্ন
Vue.js-এ কম্পোনেন্ট কমিউনিকেশনের জন্য আরও কিছু জনপ্রিয় প্যাটার্ন রয়েছে:
- ভাতৃত্ব সম্পর্ক (Sibling Components)
যদি দুটি কম্পোনেন্ট (যেমন ভাই-বোন) একে অপরের সাথে যোগাযোগ করতে চায়, তবে সাধারণভাবে প্যারেন্ট কম্পোনেন্টের মাধ্যমে ইভেন্ট বা প্রপস ব্যবহার করা হয়।
- ব্রডকাস্ট/রিসিভ (Event Bus)
কম্পোনেন্টগুলির মধ্যে ডেটা শেয়ার করার জন্য ইভেন্ট বাস ব্যবহার করা যায়। এটি সাধারণত ছোট অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়, তবে বড় অ্যাপ্লিকেশনে Vuex ব্যবহার করা বেশি কার্যকরী।
- Vuex (State Management)
বড় অ্যাপ্লিকেশনগুলিতে স্টেট ম্যানেজমেন্টের জন্য Vuex ব্যবহার করা হয়, যা প্রজেক্টের সব কম্পোনেন্টের জন্য একটি কেন্দ্রীয় স্টেট স্টোর হিসেবে কাজ করে।
সারাংশ
Vue.js-এ ইভেন্ট ইমিট এবং প্রপস কম্পোনেন্টগুলোর মধ্যে যোগাযোগের প্রধান পদ্ধতি। যখন প্যারেন্ট এবং চাইল্ড কম্পোনেন্টের মধ্যে সরাসরি যোগাযোগ করতে হয়, তখন প্রপস এবং ইভেন্ট ইমিট ব্যবহার করা হয়। আরো জটিল কম্পোনেন্ট কমিউনিকেশন ব্যবস্থায় Vuex এবং ইভেন্ট বাস ব্যবহার করা যায়।
Read more