فهرست سرفصل‌های 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 — کامپوننت ها (Components)

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

کامپوننت ها (Components)

کامپوننت (Component) یعنی تکه مستقلِ رابط کاربری. هر کامپوننت کد و ظاهر خودش را دارد. بنابراین پروژه ها منظم تر، قابل گسترش تر و نگهداری شان راحت تر می شود.

کامپوننت دقیقا چیست؟

کامپوننت reusable است؛ یعنی دوباره استفاده می شود. همچنین self-contained است؛ یعنی همه چیزش در خودش است. بنابراین صفحه را به چند بخش کوچک تبدیل می کنیم و مدیریت آسان تر می شود.

نکته: در Vue، تگ های خاصی هم داریم مثل <Teleport> و <KeepAlive>؛ اما فعلا روی ساخت کامپوننت های خودمان تمرکز می کنیم.

ساخت اولین کامپوننت

1) پوشه components را داخل src بساز. 2) فایل FoodItem.vue را ایجاد کن. 3) محتوای زیر را در آن قرار بده.

<template>
  <div>
    <h2>{{ name }}<\/h2>
    <p>{{ message }}<\/p>
  <\/div>
<\/template>

<script>
export default {
  data() {
    return {
      name: 'Apples',
      message: 'I like apples'
    };
  }
};
<\/script>

<style><\/style>

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

افزودن کامپوننت به پروژه

ابتدا main.js را به شکل زیر مرتب کن. سپس اپ را بساز و mount کن.

import { createApp } from 'vue';
import App from './App.vue';

const app = createApp(App);
app.mount('#app');

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

حالا FoodItem را register کن تا در App.vue قابل استفاده باشد.

import { createApp } from 'vue';
import App from './App.vue';
import FoodItem from './components/FoodItem.vue';

const app = createApp(App);
app.component('food-item', FoodItem);
app.mount('#app');

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

استفاده در App.vue

الان می توانی تگ سفارشی را در template بنویسی و چند بار مصرف کنی.

<template>
  <h1>Food<\/h1>
  <food-item\/>
  <food-item\/>
  <food-item\/>
<\/template>

<script><\/script>
<style><\/style>

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

کامپوننت های مستقل

هر نمونه کامپوننت، state خودش را دارد. یعنی بدون id یکتا هم هر کدام جدا رفتار می کند.

برای نمایش رفتار مستقل، روی هر کارت کلیک کن تا شمارش خودش را افزایش دهد.

<template>
  <div v-on:click="countClicks">
    <h2>{{ name }}<\/h2>
    <p>{{ message }}<\/p>
    <p id="red">You have clicked me {{ clicks }} times.<\/p>
  <\/div>
<\/template>

<script>
export default {
  data() {
    return {
      name: 'Apples',
      message: 'I like apples',
      clicks: 0
    };
  },
  methods: {
    countClicks() {
      this.clicks++;
    }
  }
};
<\/script>

<style>
  #red {
    font-weight: bold;
    color: rgb(144, 12, 12);
  }
<\/style>

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

اشاره بصری برای کلیک

برای القای کلیک پذیری، نشانگر را دست کنید.

#app > div:hover {
  cursor: pointer;
}

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

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

  1. فایل FoodItem.vue را بساز.
  2. در main.js کامپوننت را register کن.
  3. در App.vue چند نمونه اضافه کن.
  4. dev server را با npm run dev اجرا کن.

جمع بندی سریع

  • کامپوننت ها بخش های مستقل رابط هستند.
  • هر نمونه state جدا دارد.
  • register سراسری با app.component انجام می شود.
  • می توانی چندبار یک کامپوننت را استفاده کنی.

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