فهرست سرفصل‌های Vue
خانه (HOME) معرفی (Intro) دایرکتیوها (Directives) v-bind (v-bind) v-if (v-if) v-show (v-show) v-for (v-for) رویدادها (Events) v-on (v-on) متدها (Methods) تغییردهنده های رویداد (Event Modifiers) فرم ها (Forms) v-model (v-model) بایندینگ CSS (CSS Binding) ویژگی های محاسبه شده (Computed Properties) واچرها (Watchers) قالب ها (Templates) چرا، چگونه و راه اندازی (Why, How and Setup) اولین صفحه SFC (First SFC Page) کامپوننت ها (Components) پراپس (Props) کامپوننت های v-for (v-for Components) $emit() ($emit()) ویژگی های عبوری (Fallthrough) (Fallthrough Attributes) استایل Scoped (Scoped Styling) کامپوننت های محلی (Local Components) اسلات ها (Slots) v-slot (v-slot) اسلات های Scoped (Scoped Slots) کامپوننت های پویا (Dynamic Components) Teleport (Teleport) درخواست HTTP (HTTP Request) رفرنس های تمپلیت (Template Refs) هوک های چرخه عمر (Lifecycle Hooks) Provide/Inject (Provide/Inject) مسیریابی (Routing) ورودی های فرم (Form Inputs) انیمیشن ها (Animations) انیمیشن با v-for (Animations with v-for) بیلد (Build) Composition API (Composition API) ویژگی های توکار (Built-in Attributes) ویژگی 'is' ('is' Attribute) ویژگی 'key' ('key' Attribute) ویژگی 'ref' ('ref' Attribute) کامپوننت های توکار (Built-in Components) <KeepAlive> (<KeepAlive>) <Teleport> (<Teleport>) <Transition> (<Transition>) <TransitionGroup> (<TransitionGroup>) المان های توکار (Built-in Elements) <component> (<component>) <slot> (<slot>) <template> (<template>) نمونه کامپوننت (Component Instance) $attrs ($attrs) $data ($data) $el ($el) $parent ($parent) $props ($props) $refs ($refs) $root ($root) $slots ($slots) $emit() ($emit()) $forceUpdate() ($forceUpdate()) $nextTick() ($nextTick()) $watch() ($watch()) دایرکتیوها (Directives) v-bind (v-bind) v-cloak (v-cloak) v-for (v-for) v-html (v-html) v-if (v-if) v-else-if (v-else-if) v-else (v-else) v-memo (v-memo) v-model (v-model) v-on (v-on) v-once (v-once) v-pre (v-pre) v-show (v-show) v-slot (v-slot) v-text (v-text) گزینه های نمونه (Instance Options) داده ها (data) متدها (methods) محاسبه شده ها (computed) watch (watch) پراپس (props) emits (emits) expose (expose) هوک های چرخه عمر (Lifecycle Hooks) beforeCreate (beforeCreate) created (created) beforeMount (beforeMount) mounted (mounted) beforeUpdate (beforeUpdate) updated (updated) beforeUnmount (beforeUnmount) unmounted (unmounted) errorCaptured (errorCaptured) renderTracked (renderTracked) renderTriggered (renderTriggered) activated (activated) deactivated (deactivated) serverPrefetch (serverPrefetch) مثال ها (Examples) تمرین ها (Exercises) کوییز (Quiz) سیلابس (Syllabus) برنامه مطالعه (Study Plan) سرور (Server) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
Vue

Vue — $props ($props)

آخرین بروزرسانی: 1404/08/21

$props ($props)

«آبجکت $props» در Vue فهرست «پراپ ها (Props)» با مقدار فعلی است. پراپ یعنی داده ای که مثل «صفت» از والد به فرزند می دهیم. این آبجکت فقط خواندنی است. اما گاهی کمک می کند پراپ ها را پایین تر پاس دهیم یا روی آن ها مقدار «محاسبه شده (Computed)» بسازیم.

تعریف و کاربرد آبجکت $props

$props همان پراپ های تعریف شده کامپوننت است. مقدارها همیشه تازه است. می توان آن را به نوه پاس داد یا در computed استفاده کرد. توجه کن، $props فقط خواندنی است؛ مستقیم تغییرش نده.

نمونه سریع: نمایش پراپ های دریافتی

اینجا محتویات $props را در <pre> نشان می دهیم. مثل دیدن کیف ابزار.

<template>
  <div>
    <h3>Received Props</h3>
    <p>This is the $props object:</p>
    <pre>{{ this.$props }}</pre>
  </div>
</template>

مشاهده در ادیتور

نمونه 1: پاس دادن همه پراپ ها به نوه

گاهی می خواهی همان چیزها به نوه برسد. با v-bind="$props" همه را یک جا می دهیم.

<template>
  <div>
    <h3>InfoBox.vue</h3>
    <p>Props received from App.vue and passed to grand-child:</p>
    <pre>{{ this.$props }}</pre>
    <grand-child v-bind="$props" />
  </div>
</template>

<script>
export default {
  props: [
    'bagOwner',
    'bagWeight'
  ]
};
<\/script>

<style scoped>
div {
  border: solid black 1px;
  padding: 10px;
  margin-top: 20px;
  max-width: 370px;
}
</style>

مشاهده در ادیتور

نمونه 2: ساخت مقدار محاسبه شده از روی پراپ

اینجا با توجه به وزن کیف، پیام می سازیم. مثل کارت گزارش مدرسه.

<template>
  <div>
    <h3>InfoBox.vue</h3>
    <p>Computed message based on bag weight:</p>
    <span>{{ this.bagWeightStatus }}</span>
  </div>
</template>

<script>
export default {
  props: [
    'bagWeight'
  ],
  computed: {
    bagWeightStatus() {
      if (this.$props.bagWeight > 10) {
        return 'Puh, this bag is heavy!';
      }
      else {
        return 'This bag is not so heavy.';
      }
    }
  }
};
<\/script>

<style scoped>
div {
  border: solid black 1px;
  padding: 10px;
  max-width: 350px;
  margin-top: 20px;
}
span {
  background-color: lightgreen;
  padding: 5px 10px;
  font-weight: bold;
}
</style>

مشاهده در ادیتور

نکته و نگه داری بهتر

نکته: $props فقط خواندنی است. برای تغییر داده از پایین، الگوی پراپ ها همراه computed و v-bind را درست به کار ببر. همچنین می توانی از $parent یا $refs در سناریوهای خاص استفاده کنی. برای مرجع، لینک «آبجکت $props» را نگه دار.

جمع بندی سریع

  • $props لیست پراپ های فعلی است.
  • فقط خواندنی است؛ تغییرش نده.
  • با v-bind="$props" همه را پاس بده.
  • در computed، روی پراپ ها منطق بساز.