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

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

<slot> (<slot>)

اسلات (Slot) جای خالی هوشمند است. بنابراین والد محتوا می فرستد و فرزند همان جا نمایش می دهد. مثل برگه سفید داخل پوشه مدرسه که متنش را هر بار تو می نویسی.

تعریف کوتاه و کاربرد

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

مثال 1: اسلات ساده

<template>
  <div>
    <p>SlotComp.vue</p>
    <slot></slot>
  </div>
</template>

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

مثال 2: اسلات نام دار با 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>Two slots inside the component.</p>
<slot-comp v-slot:bottomSlot>
  Hello!
</slot-comp>

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

مثال 3: محتوای پیش فرض (Fallback)

<!-- SlotComp.vue -->
<template>
  <div>
    <slot>
      <h4>This is fallback content</h4>
    </slot>
  </div>
</template>
<!-- App.vue -->
<template>
  <slot-comp><!-- Empty --></slot-comp>
  <slot-comp>
    <h4>This content is provided from App.vue</h4>
  </slot-comp>
</template>

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

مثال 4: اسلات محدوده دار (Scoped Slot)

<!-- SlotComp.vue -->
<template>
  <slot
    v-for="x in foods"
    :key="x"
    :foodName="x"
  ></slot>
</template>
<script>
export default {
  data() {
    return {
      foods: ['Apple', 'Pizza', 'Rice', 'Fish', 'Cake']
    };
  }
};
<\/script>
<!-- App.vue -->
<slot-comp v-slot="food">
  <h2>{{ food.foodName }}</h2>
</slot-comp>

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

گام های عملی

  1. در فرزند یک <slot> بگذار. سپس ذخیره کن.
  2. در والد، بین تگ کامپوننت محتوا بنویس. سپس نتیجه ببین.
  3. اگر چند جای خالی می خواهی، از نام اسلات استفاده کن.
  4. اگر داده لازم است، اسلاتِ محدوده دار تعریف کن.

نکته: اسلات بی نام، اسلات پیش فرض است. بنابراین محتوا اول به آن می رود.

لینک های داخلی

برای درک بهتر کامپوننت پویا را ببین و صفحه المان های توکار را مرور کن. همچنین راهنمای اسلات در Vue را نشانه گذاری کن.

جمع بندی سریع

  • <slot> فقط جای خالی محتواست.
  • می تواند پیش فرض داشته باشد.
  • اسلات نام دار مسیر محتوا را مشخص می کند.
  • اسلاتِ محدوده دار داده به والد می دهد.