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

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

<component> (<component>)

المان «کامپوننت (<component>)» یک تگ توکار است. با ویژگی is کار می‌کند. بنابراین می‌توانی بین چند نما جابه‌جا شوی. مثل عوض کردن صفحه در اپ مدرسه.

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

ویژگی is نام تگ یا نام کامپوننت را می‌گیرد. سپس همان را رندر می‌کند. بنابراین سریع نما عوض می‌شود و کد مرتب می‌ماند.

مثال: کامپوننت دینامیک با is

<template>
  <button @click="toggleValue = !toggleValue">Switch component</button>
  <component :is="activeComp"></component>
</template>
<script>
export default {
  data() {
    return {
      toggleValue: true
    };
  },
  computed: {
    activeComp() {
      if (this.toggleValue) {
        return 'comp-one';
      }
      else {
        return 'comp-two';
      }
    }
  }
};
<\/script>

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

مثال: ساخت عنصر HTML با <component>

گاهی می‌خواهی مستقیماً تگ HTML بسازی. سپس is را برابر نام تگ بگذار.

<template>
  <component is="div">This is a DIV element</component>
</template>
<style scoped>
div {
  border: solid black 1px;
  background-color: lightgreen;
}
</style>

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

نگه داشتن حالت با <KeepAlive>

کامپوننت «کیپ‌الایو (KeepAlive)» حالت را حفظ می‌کند. مثل وقتی از بازی بیرون می‌آیی و ادامه می‌دهی.

<template>
  <button @click="toggleValue = !toggleValue">Switch component</button>
  <KeepAlive>
    <component :is="activeComp"></component>
  </KeepAlive>
</template>
<script>
export default {
  data() {
    return {
      toggleValue: true
    };
  },
  computed: {
    activeComp() {
      if (this.toggleValue) {
        return 'comp-one';
      }
      else {
        return 'comp-two';
      }
    }
  }
};
<\/script>

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

هشدار: v-model روی ورودیِ ساخته شده کار نمی کند

دستور v-model روی <input> که با <component> ساخته شده کار نمی‌کند. بنابراین مستقیم از <input> استفاده کن.

<template>
  <p>Does not work:</p>
  <component is="input" type="number" v-model="inpVal1"></component>
  <p>inpVal1: {{ inpVal1 }}</p>
  <hr>
  <p>Works:</p>
  <input type="number" v-model="inpVal2">
  <p>inpVal2: {{ inpVal2 }}</p>
</template>
<script>
export default {
  data() {
    return {
      inpVal1: 4,
      inpVal2: 7
    };
  }
};
<\/script>

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

گام های عملی سریع

  1. دو کامپوننت ساده بساز. سپس نامشان را تعیین کن.
  2. ویژگی is را به activeComp وصل کن.
  3. اگر حالت مهم است، <KeepAlive> را اضافه کن.

نکته: نام‌ها را معنادار نگه دار. سپس تست دکمه را فراموش نکن.

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

برای تمرین ترنزیشن در Vue و برای حافظه وضعیت کامپوننت دینامیک Vue را ببین.

جمع بندی سریع

  • is تعیین می‌کند چه چیزی رندر شود.
  • <component> می‌تواند تگ HTML بسازد.
  • <KeepAlive> حالت را نگه می‌دارد.
  • v-model روی ورودیِ ساخته‌شده کار نمی‌کند.