Options: متفرقه (Misc)
نام
به صراحت یک نام نمایشی (display name) برای کامپوننت تعریف میکند.
تایپ (Type)
tsinterface ComponentOptions { name?: string }
جزئیات
نام کامپوننت برای موارد زیر استفاده میشود:
- خود ارجاعی بازگشتی (Recursive self-reference) در تمپلیت خود کامپوننت
- نمایش در درخت بازرسی (inspection tree) کامپوننت متعلق به Vue DevTools
- نمایش در tranceهای کامپوننت اخطار (warning)
زمانی که از کامپوننتهای تک فایلی استفاده میکنید کامپوننت از قبل نام خود را از نام فایل میخواند (infer میکند). برای مثال یک فایل با نام
MyComponent.vue
نام نمایشی "MyComponent" را میخواند.مورد دیگر زمانی است که یک کامپوننت به صورت سراسری (global) با
app.component
ثبت شده باشد که در این صورت آیدی سراسری به شکل خودکار به عنوان نام کامپوننت قرار میگیرد.آپشن
name
به شما اجازه میدهد که نام infer شده را نادیده بگیرید یا زمانی که هیچ نامی نمیتواند infer شود به صورت مشخص یک نام تعیین کنید (برای مثال زمانی که از ابزارهای ساخت (build tools) استفاده نمیشود یا در یک کامپوننت غیر تک فایلی که به صورت inline هستند)یک مورد وجود دارد که نام صراحتاً ضروری است: هنگام تطبیق با کامپوننتهای قابل کش در
<KeepAlive>
از طریق propهایinclude / exclude
آن.نکته
از نسخه 3.2.34, یک کامپوننت تک فایلی با استفاده از
<script setup>
به شکل خودکار آپشنname
خود را بر اساس نام فایل infer میکند که نیاز به تعریف نام را حتی زمان استفاده از<KeepAlive>
از بین میبرد.
آپشن inheritAttrs
اینکه رفتار پیشفرض attribute fallthrough متعلق به کامپوننت فعال باشد را کنترل میکند.
تایپ (Type)
tsinterface ComponentOptions { inheritAttrs?: boolean // default: true }
جزئیات
به صورت پیشفرض ویژگیهای پیوندی (attribute binding) مربوط به اسکوپ کامپوننت والد که به عنوان props تشخیص داده نشدند "fallthrough" خواهند کرد. این به این معنی است که وقتی یک تک کامپوننت ریشهای (single-root component) داشته باشیم این پیوندها به عنوان ویژگیهای معمولی HTML به کامپوننت ریشه فرزند اعمال می شود. این ممکن است در زمان نوشتن یک کامپوننت که یک المنت هدف یا کامپوننت دیگر را در بر میگیرد (wraps) رفتار دلخواه ما نباشد. با تنظیم
inheritAttrs
رویfalse
این رفتار پیشفرض را میتوان غیرفعال کرد. ویژگیها از طریق پراپرتیهای نمونه (instance)attrs$
در دسترس هستند و میتوانند به طور صریح به یک المنت غیر root با استفاده ازv-bind
متصل شوند.مثالها
زمانی تعریف این آپشن در یک کامپوننت که از
<script setup>
استفاده میکند شما میتوانید از ماکروdefineOptions
استفاده کنید.vue<script setup> defineProps(['label', 'value']) defineEmits(['input']) defineOptions({ inheritAttrs: false }) </script> <template> <label> {{ label }} <input v-bind="$attrs" v-bind:value="value" v-on:input="$emit('input', $event.target.value)" /> </label> </template>
همچنین ببینید
کامپوننتها
یک آبجکت که کامپوننتها را ثبت میکند تا در دسترس نمونهی کامپوننت (component instance) باشد.
تایپ (Type)
tsinterface ComponentOptions { components?: { [key: string]: Component } }
نمونه
jsimport Foo from './Foo.vue' import Bar from './Bar.vue' export default { components: { // shorthand Foo, // register under a different name RenamedBar: Bar } }
همچنین ببینید Component Registration
دایرکتیوها (directives)
یک آبجکت که دایرکتیوها را ثبت میکند که در دسترس نمونهی کامپوننت باشد.
تایپ (Type)
tsinterface ComponentOptions { directives?: { [key: string]: Directive } }
نمونهها
jsexport default { directives: { // enables v-focus in template focus: { mounted(el) { el.focus() } } } }
template<input v-focus>
همچنین ببینید Custom Directives