آموزش رایگان Vue.js

درک Props و انتقال داده‌ها بین کامپوننت‌ها در Vue.js | آموزش کاربردی

24م آذر 1404 محراب حسن زاده
درک Props و انتقال داده‌ها بین کامپوننت‌ها در Vue.js | آموزش کاربردی

یکی از اصول مهم در Vue.js و بسیاری از فریم‌ورک‌های مبتنی بر Component، انتقال داده‌ها بین کامپوننت‌ها است. در Vue.js، Props مکانیزمی است که امکان ارسال داده‌ها از کامپوننت والد (Parent) به کامپوننت فرزند (Child) را فراهم می‌کند. در این مقاله، به بررسی نحوه کار با Props، تعریف و انتقال آن‌ها بین کامپوننت‌ها و بهترین شیوه‌های استفاده از Props می‌پردازیم.


مفهوم Props در Vue.js

Props (که مخفف Properties است) به عنوان متغیرهایی تعریف می‌شوند که داده‌ها را از کامپوننت والد به کامپوننت فرزند ارسال می‌کنند. Props در کامپوننت فرزند مانند داده‌های معمولی قابل دسترسی هستند، اما تغییر در آن‌ها امکان‌پذیر نیست؛ به عبارتی Props فقط خواندنی (Read-Only) هستند.


نحوه تعریف و ارسال Props از والد به فرزند

برای انتقال Props از والد به فرزند، ابتدا Props را در قالب یک آرایه یا شیء در کامپوننت فرزند تعریف می‌کنیم، سپس در کامپوننت والد مقادیر Props را ارسال می‌کنیم.

مثال: ارسال Props از والد به فرزند

کامپوننت والد (ParentComponent.vue):




< template >
  < div >
    < h1 > Parent Component < / h1 >
    < ChildComponent :message = " parentMessage " / >
  < / div >
< / template >




import ChildComponent from './ChildComponent.vue' ;

export default {
  components : {
    ChildComponent
  } ,
  data ( ) {
    return {
      parentMessage : ' Hello from Parent Component '
    } ;
  }
} ;


کامپوننت فرزند (ChildComponent.vue):




< template >
  < div >
    < p > { { message } } < / p >
  < / div >
< / template >




export default {
  props : [ ' message ' ]
} ;


در این مثال:

  • parentMessage به عنوان داده‌ای در کامپوننت والد تعریف شده است.

  • با استفاده از :message="parentMessage" مقدار parentMessage به Props با نام message در کامپوننت فرزند ارسال می‌شود.

  • در ChildComponent.vue، message به عنوان یک Prop تعریف شده و مقدار آن در HTML نمایش داده می‌شود.


تعیین نوع Props و ویژگی‌های اضافی

Vue.js به شما اجازه می‌دهد نوع Props را تعیین کنید و ویژگی‌های خاصی برای آن‌ها در نظر بگیرید، مانند نوع داده، مقدار پیش‌فرض و الزامی بودن. این ویژگی‌ها باعث افزایش خوانایی و پایداری کد می‌شوند.

مثال تعیین نوع Props و مقدار پیش‌فرض:




export default {
  props : {
    message : {
      type : String,
      required : true,
      default : ' Default Message '
    } ,
    count : {
      type : Number ,
      default : 0
    }
  }
} ;


در این مثال:

  • Prop message از نوع String است و الزامی (required: true) است. اگر والد مقداری برای آن ارسال نکند، مقدار Default Message به آن اختصاص می‌یابد.

  • Prop count از نوع Number است و مقدار پیش‌فرض 0 دارد.


ارسال Props به صورت داینامیک

Props می‌توانند داینامیک باشند، به این معنی که مقدار آن‌ها در والد تغییر کند و این تغییرات به‌طور خودکار به فرزند منتقل می‌شوند.

مثال Props داینامیک:




< template >
  < div >
    < input v-model = " parentMessage " placeholder = " Enter message " / >
    < ChildComponent :message = " parentMessage " / >
  < / div >
< / template >




import ChildComponent from ' ./ChildComponent.vue ' ;

export default {
  components: {
    ChildComponent
  } ,
  data ( ) {
    return {
      parentMessage : ' '
    } ;
  }
} ;


در این مثال، هر بار که مقدار parentMessage تغییر کند، این تغییرات به صورت آنی به Prop message در ChildComponent منتقل می‌شود و نمایش داده می‌شود.


نکات و بهترین شیوه‌ها در استفاده از Props

  • نام‌گذاری Props با دقت: سعی کنید از نام‌های توصیفی برای Props استفاده کنید تا مفهوم و هدف Prop مشخص باشد.

  • پرهیز از دستکاری مستقیم Props در فرزند: Props در Vue فقط خواندنی هستند. اگر نیاز دارید داده را در فرزند تغییر دهید، ابتدا آن را در یک متغیر جدید کپی کنید یا از والد درخواست تغییر دهید.

  • استفاده از Prop Validation: همیشه نوع Props و سایر ویژگی‌های آن‌ها را مشخص کنید تا از مشکلات احتمالی جلوگیری شود.

  • مدیریت Props در پروژه‌های بزرگ: برای پروژه‌های بزرگ و پیچیده، می‌توانید Props را در سطح کامپوننت‌های عمیق‌تر منتقل کنید یا از Vuex برای مدیریت حالت مرکزی استفاده کنید.


ارتباط کامپوننت‌های پیچیده با چندین Prop

گاهی ممکن است نیاز به ارسال چندین Prop به یک کامپوننت باشد. برای این کار، می‌توانید Props متعددی را در کامپوننت فرزند تعریف کنید و آن‌ها را در والد مقداردهی کنید.

مثال: ارسال چندین Prop به یک کامپوننت فرزند:

ParentComponent.vue:




< template >
  < ChildComponent :title = " parentTitle " :count = " parentCount " / >
< / template >




import ChildComponent from ' ./ChildComponent.vue ' ;

export default {
  components : {
    ChildComponent
  } ,
  data ( ) {
    return {
      parentTitle : ' Welcome ' ,
      parentCount : 10
    } ;
  }
} ;


ChildComponent.vue:




< template >
  < div >
    < h2 > { { title } } < / h2 >
    < p > Count: { { count } } < / p >
  < / div >
< / template >




export default {
  props : {
    title : String ,
    count : Number
  }
} ;


در اینجا، دو Prop title و count به ChildComponent ارسال می‌شوند و در فرزند نمایش داده می‌شوند.


جلوگیری از تداخل Props با default

گاهی ممکن است بخواهید مقدار پیش‌فرضی برای Props تعیین کنید، اما مقدار default تنها زمانی اعمال می‌شود که والد مقدار Prop را ارسال نکند.

مثال استفاده از مقدار پیش‌فرض در Props:




props : {
  status : {
    type : String ,
    default : ' active '
  }
}


اگر کامپوننت والد مقدار status را ارسال نکند، ChildComponent مقدار active را به عنوان مقدار پیش‌فرض برای status استفاده می‌کند.


ارتباط با داده‌های واکنش‌پذیر (Reactive) در Props

با توجه به اینکه Props در Vue فقط خواندنی هستند، اگر می‌خواهید از Props به عنوان داده‌ای واکنش‌پذیر استفاده کنید، باید آن‌ها را در یک متغیر جدید کپی کنید. این کار باعث می‌شود داده به صورت مستقل در کامپوننت فرزند قابل تغییر باشد بدون اینکه بر داده‌های والد تأثیر بگذارد.

مثال تبدیل Prop به داده قابل تغییر:




export default {
  props : [ ' initialCount ' ] ,
  data ( ) {
    return {
      count : this.initialCount
    } ;
  }
} ;


در این مثال، Prop initialCount به داده count کپی شده و اکنون به صورت مستقل و قابل تغییر است.


نتیجه‌گیری

Props یکی از ابزارهای قدرتمند در Vue.js برای انتقال داده‌ها بین کامپوننت‌ها است که به شما امکان می‌دهد برنامه‌هایی با ساختار کامپوننتی و مستقل ایجاد کنید. با استفاده صحیح از Props، می‌توانید داده‌ها را به صورت دقیق و قابل پیش‌بینی بین کامپوننت‌های والد و فرزند انتقال دهید و برنامه‌ای منظم و مقیاس‌پذیر بسازید.

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کامل استفاده از float، clear، text و font در CSS برای طراحی وب: راهنمای جامع
6م شهریور 1402

آموزش کامل استفاده از float، clear، text و font در CSS برای طراحی وب: راهنمای جامع

مطالعه بیشتر
استفاده از font face در CSS برای اضافه کردن فونت‌های سفارشی: راهنمای کامل
16م آبان 1403

استفاده از font face در CSS برای اضافه کردن فونت‌های سفارشی: راهنمای کامل

مطالعه بیشتر
آموزش ساختار کامپوننت در Vue.js (راهنمای کامل همراه مثال)
15م مرداد 1404

آموزش ساختار کامپوننت در Vue.js (راهنمای کامل همراه مثال)

مطالعه بیشتر
آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر
3م آبان 1403

آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر

مطالعه بیشتر
آموزش اضافه کردن ویدئو و صدا به وب‌سایت: نحوه استفاده از تگ‌های video و audio در HTML
23م مرداد 1402

آموزش اضافه کردن ویدئو و صدا به وب‌سایت: نحوه استفاده از تگ‌های video و audio در HTML

مطالعه بیشتر
آموزش سیر تا پیاز تاریخ و زمان در PHP (استاندارد گوگل)
27م تیر 1405

آموزش سیر تا پیاز تاریخ و زمان در PHP (استاندارد گوگل)

مطالعه بیشتر
عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف
28م شهریور 1402

عملگرها و عبارات محاسباتی در جاوا اسکریپت: نحوه استفاده و کاربردهای مختلف

مطالعه بیشتر
آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل
5م آبان 1403

آموزش استفاده از ماژول‌ها (Modules) در جاوا اسکریپت: آشنایی با ES6 Modules - راهنمای کامل

مطالعه بیشتر
آموزش ایجاد و حذف المان‌های DOM به صورت داینامیک با جاوا اسکریپت: راهنمای جامع و کاربردی
2م آبان 1403

آموزش ایجاد و حذف المان‌های DOM به صورت داینامیک با جاوا اسکریپت: راهنمای جامع و کاربردی

مطالعه بیشتر
آموزش کامل دستور switch-case در PHP (به همراه مثال‌های کاربردی)
4م تیر 1405

آموزش کامل دستور switch-case در PHP (به همراه مثال‌های کاربردی)

مطالعه بیشتر
آشنایی با متغیرها در PHP به زبان ساده (راهنمای جامع)
21م خرداد 1405

آشنایی با متغیرها در PHP به زبان ساده (راهنمای جامع)

مطالعه بیشتر
راهنمای جامع معرفی PHP؛ تاریخچه، ویژگی‌ها و جایگاه آن در توسعه وب
14م خرداد 1405

راهنمای جامع معرفی PHP؛ تاریخچه، ویژگی‌ها و جایگاه آن در توسعه وب

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد