আপনার বুঝতে হবে, আপনার যে উপাদানটির ক্রমক্রমটি রয়েছে এবং আপনি কীভাবে প্রপসগুলি পার করছেন তা অবশ্যই আপনার ক্ষেত্রে বিশেষ এবং এটি সাধারণত ডিভস দ্বারা মুখোমুখি হয় না।
অভিভাবক উপাদান - MyProp-> শিশু উপাদান - MyProp-> নাতনী উপাদান
মাইপ্রপ যদি প্যারেন্ট উপাদানগুলিতে পরিবর্তিত হয় তবে এটি সন্তানের উপাদানগুলিতেও প্রতিফলিত হবে।
এবং যদি মাইপ্রপ চাইল্ড উপাদানগুলিতে পরিবর্তন করা হয় তবে এটি নাতির অংশেও প্রতিফলিত হবে ।
সুতরাং মাইপ্রপ যদি প্যারেন্ট উপাদানগুলিতে পরিবর্তিত হয় তবে এটি নাতি-অংশে প্রতিফলিত হবে । (এ পর্যন্ত সব ঠিকই).
সুতরাং স্তরক্রম নিচে আপনি কিছু করতে হবে না সহজাত প্রতিক্রিয়াশীল হবে।
এখন শ্রেণিবিন্যাসে উঠে যাওয়ার কথা বলছি
মাইপ্রপ যদি গ্র্যান্ডচিল্ড উপাদানগুলিতে পরিবর্তন করা হয় তবে এটি সন্তানের উপাদানগুলিতে প্রতিফলিত হবে না । আপনাকে চাইল্ডে। Sync সংশোধক ব্যবহার করতে হবে এবং গ্র্যান্ডচিল্ড উপাদানটি থেকে ইভেন্ট নির্গত করতে হবে।
মাইপ্রপ যদি শিশু উপাদানগুলিতে পরিবর্তন করা হয় তবে এটি প্যারেন্ট উপাদানগুলিতে প্রতিফলিত হবে না । আপনাকে পিতামাতায়। Sync সংশোধক ব্যবহার করতে হবে এবং সন্তানের উপাদান থেকে ইভেন্ট নির্গত করতে হবে।
মাইপ্রপ যদি গ্র্যান্ডচিল্ড উপাদানগুলিতে পরিবর্তন করা হয় তবে এটি প্যারেন্ট উপাদানগুলিতে প্রতিফলিত হবে না (স্পষ্টতই)। আপনাকে। Sync মডিফায়ার চাইল্ড ব্যবহার করতে হবে এবং নাতির অংশ থেকে ইভেন্ট নির্গত করতে হবে, তারপরে চাইল্ড কম্পোনেন্টে প্রপটি দেখুন এবং পরিবর্তনের ক্ষেত্রে একটি ইভেন্ট প্রেরণ করুন যা পিতৃ উপাদান দ্বারা সিঙ্ক মোডিফায়ার ব্যবহার করে শোনা যাচ্ছে।
বিভ্রান্তি এড়ানোর জন্য কিছু কোড দেখুন
Parent.vue
<template>
<div>
<child :myProp.sync="myProp"></child>
<input v-model="myProp"/>
<p>{{myProp}}</p>
</div>
</template>
<script>
import child from './Child.vue'
export default{
data(){
return{
myProp:"hello"
}
},
components:{
child
}
}
</script>
<style scoped>
</style>
Child.vue
<template>
<div> <grand-child :myProp.sync="myProp"></grand-child>
<p>{{myProp}}</p>
</div>
</template>
<script>
import grandChild from './Grandchild.vue'
export default{
components:{
grandChild
},
props:['myProp'],
watch:{
'myProp'(){
this.$emit('update:myProp',this.myProp)
}
}
}
</script>
<style>
</style>
Grandchild.vue
<template>
<div><p>{{myProp}}</p>
<input v-model="myProp" @input="changed"/>
</div>
</template>
<script>
export default{
props:['myProp'],
methods:{
changed(event){
this.$emit('update:myProp',this.myProp)
}
}
}
</script>
<style>
</style>
তবে এর পরে আপনি মান্য বলার চেঁচামেচি সতর্কতাগুলি লক্ষ্য করতে সহায়তা করবেন না
'যখন কোনও প্যারেন্ট উপাদান পুনরায় রেন্ডার করে তখন মানটি ওভাররাইট করা হবে বলে সরাসরি কোনও প্রপকে পরিবর্তন করতে এড়াতে হবে' '
আবার আমি যেমন আগেই উল্লেখ করেছি বেশিরভাগ দেবগণ এই সমস্যাটির মুখোমুখি হয় না, কারণ এটি একটি বিরোধী নিদর্শন। এজন্য আপনি এই সতর্কতাটি পান।
তবে আপনার সমস্যাটি সমাধান করার জন্য (আপনার নকশা অনুযায়ী)। আমি বিশ্বাস করি আপনাকে উপরের কাজগুলি চারপাশে করতে হবে (সৎ হতে হ্যাক)। আমি এখনও আপনাকে পরামর্শ দিচ্ছি যে আপনার নকশাটি পুনর্বিবেচনা করা উচিত এবং তৈরি করা ত্রুটিগুলির চেয়ে কম প্রবণ।
আমি আসা করি এটা সাহায্য করবে.