فهرست سرفصل‌های 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)
نتیجه‌ای برای جستجو یافت نشد.

Teleport (Teleport)

تله پورت Vue یعنی جابه جایی محتوا داخل DOM. «DOM» همان ساختار درختی صفحه است. با تگ <Teleport> محتوا را به جای دیگر می فرستیم. این کار برای مودال ها عالی است.

تگ <Teleport> و ویژگی to

برای جابه جایی، محتوا را داخل <Teleport> بگذارید و مقصد را با to مشخص کنید. مقدار to بر اساس انتخاب گر CSS نوشته می شود.

<Teleport to="body">
  <p>Hello!</p>
</Teleport>

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

می توانید به هر عنصر هدف بفرستید؛ مثلاً به یک div با id خاص: <Teleport to="#receivingDiv">.

نمونه ساده داخل کامپوننت

در این نمونه، یک div قرمز از داخل کامپوننت، به انتهای body منتقل می شود.

<template>
  <div>
    <h2>Component</h2>
    <p>This is the inside of the component.</p>
    <Teleport to="body">
      <div id="redDiv">Hello!</div>
    </Teleport>
  </div>
</template>

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

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

با وجود انتقال محتوا، منطق <script> و استایل های scoped همان کامپوننت، روی عنصر تله پورت شده اعمال می شود.

<template>
  <div>
    <h2>Component</h2>
    <p>This is the inside of the component.</p>
    <Teleport to="body">
      <div
        id="redDiv"
        @click="toggleVal = !toggleVal"
        :style="{ backgroundColor: bgColor }"
      >
        Hello!<br>
        Click me!
      </div>
    </Teleport>
  </div>
</template>

<script>
export default {
  data() {
    return {
      toggleVal: true
    };
  },
  computed: {
    bgColor() {
      if (this.toggleVal) {
        return 'lightpink';
      }
      else {
        return 'lightgreen';
      }
    }
  }
};
<\/script>

<style scoped>
#redDiv {
  margin: 10px;
  padding: 10px;
  display: inline-block;
}

#redDiv:hover {
  cursor: pointer;
}
</style>

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

گام های عملی

  1. یک مقصد ثابت در صفحه تعیین کن؛ مثلاً body.
  2. محتوا را داخل <Teleport to="..."> قرار بده.
  3. در صورت نیاز، از id یا کلاس مقصد استفاده کن.
  4. تعامل ها و استایل ها را در همان کامپوننت بنویس.

نکته: برای مودال و پنجره شناور، تله پورت دید بهتر و تداخل کمتر می دهد.

جمع بندی سریع

  • <Teleport> محتوا را در DOM جابه جا می کند.
  • to مقصد را با selector تعیین می کند.
  • کد script و style همچنان مؤثر است.
  • برای مودال ها و تولتیپ ها عالی است.

مطالب مرتبط: کامپوننت های پویا، تله پورت Vue، و درخواست های HTTP.