فهرست سرفصل‌های 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 — $attrs ($attrs)

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

$attrs ($attrs)

آبجکت «$attrs» یعنی جایی که «صفات عبوری (Fallthrough Attributes)» ذخیره می شوند. صفات عبوری، همان ویژگی های غیرِپراپ هستند که روی تگِ کامپوننت می نویسیم. سپس این صفات، به یک عنصرِ داخل کامپوننت می رسند. مثل برچسب های کیف که از بیرون می آیند، اما روی جیب داخلی می چسبند.

تعریف و کاربرد $attrs

$attrs نماینده صفات عبوری و شنونده های رویداد روی تگ کامپوننت است. با v-bind="$attrs" می گوییم این صفات و رویدادها به کدام عنصر برسند. این آبجکت «فقط خواندنی» است. اگر چند ریشه داریم، با $attrs مشخص می کنیم کدام عنصر صفات را بگیرد.

نمونه ساده: انتقال صفات به یک تگ

در این نمونه، صفت هایی مثل id یا title که روی تگِ کامپوننت نوشته شده اند، به تگ <p> می رسند.

<template>
  <h3>Tigers</h3>
  <img src="/img_tiger_small.jpg" alt="tiger">
  <p v-bind="$attrs">Tigers eat meat and not plants, so they are called carnivores.</p>
</template>

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

دیدن محتویات $attrs داخل کامپوننت

می توانیم مقدار $attrs را ببینیم و در صفحه نمایش دهیم. این کار برای رفع اشکال خیلی کمک می کند.

<template>
  <h3>Tigers</h3>
  <img src="/img_tiger_small.jpg" alt="tiger">
  <p v-bind="$attrs">Tigers eat meat and not plants, so they are called carnivores.</p>
  <hr>
  <p><strong>Below is the content of the $attrs object:</strong></p>
  <pre>{{ attrsObject }}</pre>
</template>

<script>
export default {
  data() {
    return {
      attrsObject: null
    };
  },
  mounted() {
    console.log(this.$attrs);
    this.attrsObject = this.$attrs;
  }
};
<\/script>

<style>
#pink {
  background-color: pink;
  border-radius: 15px;
  padding: 10px;
}
img {
  width: 100%;
  border-radius: 15px;
}
<\/style>

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

گرفتن رویداد از والد با $attrs

می توانیم شنونده رویداد را از والد بگیریم. اینجا کلیک روی تصویر، از بیرون منتقل می شود.

<template>
  <h3>Toggle Image Size</h3>
  <p>Click the image to toggle the image size.</p>
  <img v-bind="$attrs" src="/img_tiger_small.jpg" class="imgSmall">
</template>

<style>
.imgSmall {
  width: 60%;
}
.imgLarge {
  width: 100%;
}
img {
  border-radius: 15px;
  cursor: pointer;
}
<\/style>

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

گام های عملی

  1. صفاتِ غیرپراپ را روی تگِ کامپوننت بنویس.
  2. در عنصرِ هدف، v-bind="$attrs" را اضافه کن.
  3. در صورت چند ریشه، عنصرِ درست را انتخاب کن.

نکته: $attrs فقط خواندنی است؛ تغییرش نده. ابتدا منبعِ داده را اصلاح کن.

هشدار: اگر پراپ هم نام باشد، دیگر در $attrs نیست. پس نام ها را با دقت انتخاب کن.

پیوندهای داخلی

برای قالب بندی چندعنصری به عنصر <template> رجوع کن. همچنین بخش آبجکت $attrs در «نمونه کامپوننت» ارتباط ها را بهتر نشان می دهد.

جمع بندی سریع

  • $attrs صفات عبوری و رویدادها را نگه می دارد.
  • با v-bind="$attrs" عنصرِ هدف را تغذیه کن.
  • $attrs فقط خواندنی است؛ منبع را تغییر بده.
  • پراپ ها از $attrs حذف می شوند.