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

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

v-slot (v-slot)

«v-slot» یک دیرکتیو (Directive) است؛ یعنی دستور کوتاه Vue برای وصل کردن محتوا به اسلات نام دار. با آن مشخص می کنیم هر تکه محتوا دقیقاً در کجای قالب فرزند قرار بگیرد؛ مثل برگه امتحان که بخش «سؤال 1» و «سؤال 2» جداست.

چرا v-slot؟

اگر چند اسلات (Slot) بدون نام داشته باشیم، محتوا در همه می نشیند. نتیجه، تکرار است.

<!-- App.vue -->
<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp>'Hello!'</slot-comp>

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

<!-- SlotComp.vue -->
<h3>Component</h3>
<div>
  <slot></slot>
</div>
<div>
  <slot></slot>
</div>

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

اسلات های نام دار با v-slot

برای کنترل جای محتوا، اسلات ها را نام گذاری می کنیم و از v-slot استفاده می کنیم.

<!-- SlotComp.vue -->
<h3>Component</h3>
<div>
  <slot name="topSlot"></slot>
</div>
<div>
  <slot name="bottomSlot"></slot>
</div>

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

<!-- App.vue -->
<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp v-slot:bottomSlot>'Hello!'</slot-comp>

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

اسلات پیش فرض (Default)

اسلاتِ بی نام می شود «پیش فرض». اگر v-slot ندهیم، محتوا آنجاست.

<!-- SlotComp.vue -->
<h3>Component</h3>
<div>
  <slot></slot>
</div>
<div>
  <slot name="bottomSlot"></slot>
</div>

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

<!-- App.vue -->
<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp v-slot:default>'Default slot'</slot-comp>

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

استفاده از v-slot داخل <template>

برای ارسال چند عنصر باهم به یک اسلات، از تگ template استفاده می کنیم.

<!-- App.vue -->
<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp>
  <template v-slot:bottomSlot>
    <h4>To the bottom slot!</h4>
    <p>This p tag and the h4 tag above are directed to the bottom slot with the v-slot directive used on the template tag.</p>
  </template>
  <p>This goes into the default slot</p>
</slot-comp>

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

<!-- SlotComp.vue -->
<h3>Component</h3>
<div>
  <slot></slot>
</div>
<div>
  <slot name="bottomSlot"></slot>
</div>

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

میان بر # برای v-slot

می توانیم v-slot:topSlot را کوتاه بنویسیم: #topSlot. کوتاه تر و تمیزتر.

<!-- App.vue -->
<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp #topSlot>'Hello!'</slot-comp>

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

نکته و ادامه مسیر

نکته: نام اسلات ها را واضح انتخاب کن. سپس از اسلات ها شروع کن و برای الگوهای پیشرفته، صفحه اسلات های Scoped را ببین.

جمع بندی سریع

  • v-slot، راه هدف گیری اسلاتِ درست است.
  • اسلاتِ بی نام، پیش فرض محتوای عادی است.
  • template برای ارسال چند عنصر کنارهم است.
  • # میان بر v-slot است و کد را کوتاه می کند.