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

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

Composition API (Composition API)

«کامپوزیشن API» روشی تازه برای ساخت برنامه های Vue است. این روش به جای ساختار «آپشنز API»، از توابع واردشده استفاده می کند. «ری اکتیو (Reactive)» یعنی مقدار عوض شود و نما خودکار به روز شود. الان خیلی ساده و مدرسه ای جلو می رویم.

کامپوزیشن API چیست؟

در کامپوزیشن API، منطق را با توابعی مثل ref و computed می نویسیم. سپس با <script setup> مستقیم در <template> استفاده می کنیم. این روش آزادی بیشتری می دهد، ولی کمی عمیق تر است.

نمونه کامپوزیشن API با <script setup>

<template>
  <h1>Example</h1>
  <img src="/img_typewriter.jpeg" alt="Typewriter">
  <p>Typewriters left in storage: {{ typeWriters }}</p>
  <button @click="remove">Remove one</button>
  <p style="font-style: italic;">"{{ storageComment }}"</p>
</template>

<script setup>
  import { ref, computed } from 'vue';
  const typeWriters = ref(10);
  function remove() {
    if (typeWriters.value > 0) {
      typeWriters.value--;
    }
  }
  const storageComment = computed(function() {
    if (typeWriters.value > 5) {
      return "Many left";
    }
    else if (typeWriters.value > 0) {
      return "Very few left";
    }
    else {
      return "No typewriters left";
    }
  });
<\/script>

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

نکته: <script setup> نوشتن متغیر و تابع را کوتاه می کند. بنابراین، متغیرها مستقیماً در <template> در دسترس هستند.

مقایسه با Options API

در «آپشنز API»، داده ها، متدها و محاسبه شده ها جدا هستند. این ساختار برای شروع دوستانه تر است. اما آزادی ترکیب منطق در کامپوزیشن API بیشتر است.

همان مثال با Options API

<template>
  <h1>Example</h1>
  <img src="/img_typewriter.jpeg" alt="Typewriter">
  <p>Typewriters left in storage: {{ typeWriters }}</p>
  <button @click="remove">Remove one</button>
  <p style="font-style: italic;">"{{ storageComment }}"</p>
</template>

<script>
export default {
  data() {
    return {
      typeWriters: 10
    };
  },
  methods: {
    remove() {
      if (this.typeWriters > 0) {
        this.typeWriters--;
      }
    }
  },
  computed: {
    storageComment() {
      if (this.typeWriters > 5) {
        return "Many left";
      }
      else if (this.typeWriters > 0) {
        return "Very few left";
      }
      else {
        return "No typewriters left";
      }
    }
  }
};
<\/script>

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

گام های عملی برای شروع

  1. یک فایل با <script setup> بساز.
  2. توابع لازم مثل ref و computed را وارد کن.
  3. متغیر ری اکتیو بساز و در قالب نمایش بده.

هشدار: حتماً نام ها را دقیق بنویس. اشتباه های کوچک، رفتار را عوض می کنند.

جمع بندی سریع

  • کامپوزیشن API آزادی ترکیب منطق می دهد.
  • <script setup> کدنویسی را کوتاه تر می کند.
  • ref متغیر ری اکتیو می سازد.
  • computed مقدار وابسته را محاسبه می کند.

بیشتر بخوان: بیلد (Build) | کامپوزیشن API