فهرست سرفصل‌های 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» را ساده می گوییم. «اسلات (Slot)» جای خالی محتوا در یک کامپوننت است. با v-slot محتوا را به اسلات های نام دار می فرستیم. همچنین می توانیم داده اسلات را بگیریم.

تعریف و کاربرد v-slot

v-slot محتوا را به اسلات نام دار هدایت می کند. نگارش کوتاه # است. این دستور روی خود کامپوننت یا روی <template> می آید. برای چند اسلات، از چند <template> استفاده کن. همچنین با اسلات های حوزه دار، داده هم می گیریم.

نمونه پایه: اسلات نام دار

پیام "Hello!" به اسلات نام دار bottomSlot می رود.

<slot-comp v-slot:bottomSlot>'Hello!'</slot-comp>

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

دادن محتوا به چند اسلات

اینجا دو اسلات داریم: topSlot و bottomSlot. با دو <template> پرشان می کنیم.

<template>
  <h1>App.vue</h1>
  <p>دو اسلات داریم و هرکدام جدا پر می شوند.</p>
  <slot-comp>
    <template v-slot:topSlot>
      <div>
        <p>Tigers are beautiful!</p>
        <img src="tiger.svg" alt="tiger" width="100">
      </div>
    </template>
    <template v-slot:bottomSlot>
      <div>
        <p>Whales can be very big</p>
      </div>
    </template>
  </slot-comp>
</template>

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

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

اسلات پیش فرض با v-slot:default

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

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

<!-- App.vue -->
<h1>App.vue</h1>
<p>یک اسلات پیش فرض داریم.</p>
<slot-comp v-slot:default>'Default slot'</slot-comp>

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

نگارش کوتاه: #name

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

<!-- App.vue -->
<h1>App.vue</h1>
<p>از نگارش کوتاه برای اسلات استفاده کن.</p>
<slot-comp #topSlot>'Hello!'</slot-comp>

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

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

اسلات حوزه دار: دریافت داده

وقتی فرزند با v-bind داده می فرستد، والد آن را با v-slot می گیرد.

<!-- App.vue -->
<slot-comp v-slot="dataFromSlot">
  <h2>{{ dataFromSlot.lclData }}</h2>
</slot-comp>

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

گام های عملی

  1. در فرزند اسلات نام دار بساز.
  2. در والد با v-slot محتوا را تزریق کن.
  3. برای چند اسلات، چند <template> استفاده کن.

جمع بندی سریع

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

نکته: برای نمایش ساده مشروط، صفحه v-show را هم ببین. همچنین درباره ساخت کامپوننت، صفحه کامپوننت ها را مرور کن.