ভ্যু প্যাটার্নটি props
নীচে এবং events
উপরে। এটি সহজ শোনায় তবে কাস্টম উপাদান লেখার সময় ভুলে যাওয়া সহজ।
ভ্যু ২.২.০ হিসাবে আপনি ভি-মডেল ( গণিত বৈশিষ্ট্য সহ ) ব্যবহার করতে পারেন । আমি এই সংমিশ্রণটি উপাদানগুলির মধ্যে একটি সাধারণ, পরিষ্কার এবং সামঞ্জস্যপূর্ণ ইন্টারফেস তৈরি করে খুঁজে পেয়েছি:
props
আপনার উপাদানগুলিতে যে কোনও পাস করা প্রতিক্রিয়াশীল থেকে যায় (যেমন, এটি ক্লোন করা হয় না বা watch
পরিবর্তনগুলি সনাক্ত হওয়ার সাথে সাথে স্থানীয় অনুলিপি আপডেট করার জন্য কোনও ফাংশনের প্রয়োজন হয় না )।
- পরিবর্তনগুলি পিতামাতার কাছে স্বয়ংক্রিয়ভাবে নির্গত হয়।
- উপাদানগুলির একাধিক স্তরের সাথে ব্যবহার করা যেতে পারে।
একটি গণনা করা সম্পত্তি সেটার এবং গেটরকে পৃথকভাবে সংজ্ঞায়িত করার অনুমতি দেয়। এটি Task
উপাদানটিকে নিম্নরূপে পুনরায় লেখার অনুমতি দেয় :
Vue.component('Task', {
template: '#task-template',
props: ['list'],
model: {
prop: 'list',
event: 'listchange'
},
computed: {
listLocal: {
get: function() {
return this.list
},
set: function(value) {
this.$emit('listchange', value)
}
}
}
})
মডেল সম্পত্তি সংজ্ঞায়িত যা prop
সঙ্গে যুক্ত করা হয় v-model
যা ইভেন্ট, এবং পরিবর্তন নির্গত করা হবে না। তারপরে আপনি নীচের মতো পিতামাতার কাছ থেকে এই উপাদানটি কল করতে পারেন:
<Task v-model="parentList"></Task>
listLocal
কম্পিউটেড সম্পত্তি উপাদান মধ্যে একটি সহজ গেটার এবং সেটার ইন্টারফেস প্রদান করে (ক ব্যক্তিগত পরিবর্তনশীল হচ্ছে মত মনে)। এর মধ্যে #task-template
আপনি রেন্ডার করতে পারবেন listLocal
এবং এটি প্রতিক্রিয়াশীল থেকে যাবে (অর্থাত্ যদি parentList
পরিবর্তন হয় তবে এটি Task
উপাদানটি আপডেট করবে )। আপনি listLocal
সেটারকে (যেমন, this.listLocal = newList
) কল করেও পরিবর্তন করতে পারেন এবং এটি পিতামাতার মধ্যে পরিবর্তনটি নির্গত করে।
এই প্যাটার্নটি সম্পর্কে দুর্দান্ত যেটি আপনি হ'ল (ব্যবহার করে ) listLocal
এর একটি শিশু উপাদানকে যেতে পারেন এবং শিশু উপাদান থেকে পরিবর্তনগুলি শীর্ষ স্তরের উপাদানটিতে প্রচার করবে।Task
v-model
উদাহরণস্বরূপ, বলুন আমাদের কাছে EditTask
টাস্ক ডেটাতে কিছু ধরণের পরিবর্তন করার জন্য একটি পৃথক উপাদান রয়েছে। একই v-model
এবং গণনীয় বৈশিষ্ট্যগুলির প্যাটার্ন ব্যবহার করে আমরা listLocal
উপাদানটিতে (ব্যবহার করে v-model
) যেতে পারি:
<script type="text/x-template" id="task-template">
<div>
<EditTask v-model="listLocal"></EditTask>
</div>
</script>
তাহলে EditTask
নিঃসরণ করে পরিবর্তন এটা উপযুক্তভাবে ডাকব set()
উপর listLocal
এবং যার ফলে শীর্ষ স্তরের ইভেন্ট সঞ্চারিত। একইভাবে, EditTask
উপাদানটি অন্যান্য শিশু উপাদানগুলিকেও কল করতে পারে (যেমন ফর্ম উপাদানগুলি) ব্যবহার করে v-model
।