فهرست سرفصل‌های 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 — هوک های چرخه عمر (Lifecycle Hooks)

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

هوک های چرخه عمر (Lifecycle Hooks)

هوک چرخه عمر (Lifecycle Hook) یعنی «زمان های مهم اجرای کامپوننت». هر هوک، مثل زنگ تفریح مدرسه، لحظه ای خاص است که می توانیم کد اجرا کنیم.

هوک ها در یک نگاه

ویو در مراحل مختلف اجرا، هوک های مشخصی دارد. مثلاً mounted یعنی «الان به DOM وصل شدی». بنابراین می توانیم به عناصر صفحه دسترسی بگیریم.

همچنین، beforeUpdate و updated مربوط به رندر دوباره اند. اولی قبل از رندر جدید است و دومی بلافاصله پس از به روزرسانی DOM است.

فهرست هوک ها طبق منبع

قبل ساخت: beforeCreate، ساخته شدن: created، قبل نصب: beforeMount، نصب شدن: mounted، قبل به روزرسانی: beforeUpdate، به روزرسانی شدن: updated، قبل حذف: beforeUnmount، حذف شدن: unmounted، خطاپذیری: errorCaptured، رهگیری رندر: renderTracked، تحریک رندر: renderTriggered، فعال سازی کش: activated، غیرفعال سازی کش: deactivated، رندر سمت سرور: serverPrefetch.

نمونه 1: اجرای امن بعد از نصب

در mounted به DOM دسترسی داریم. پس با خیال راحت عنصر می گیریم.

<template>
  <div>
    <h2>Lifecycle Demo</h2>
    <p id="status">Ready</p>
  </div>
</template>

<script>
export default {
  mounted() {
    const el = document.getElementById('status');
    if (el) {
      el.textContent = 'Mounted and DOM is ready!';
    }
    console.log('mounted called');
  },
  beforeUnmount() {
    console.log('cleanup before unmount');
  }
};
<\/script>

<style>
#status {
  font-weight: bold;
}
</style>

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

نمونه 2: تفاوت beforeUpdate و updated

در beforeUpdate هنوز DOM قبلی است. در updated DOM تازه شده است.

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="inc">Add</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    };
  },
  methods: {
    inc() {
      this.count += 1;
    }
  },
  beforeUpdate() {
    console.log('beforeUpdate: old DOM still visible');
  },
  updated() {
    console.log('updated: DOM is now refreshed');
  }
};
<\/script>

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

گام های عملی پیشنهادی

  1. کار با DOM را در mounted انجام بده.
  2. منطق پاک سازی را در beforeUnmount قرار بده.
  3. برای دیباگ، تفاوت beforeUpdate و updated را لاگ کن.

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

هشدار: به DOM قبل از mounted دسترسی نگیر؛ عنصر هنوز حاضر نیست.

جمع بندی سریع

  • mounted یعنی DOM آماده است.
  • updated بعد از رندر جدید است.
  • beforeUnmount برای جمع وجور کردن است.
  • هوک ها زمان بندی امن اجرا می دهند.

لینک های داخلی: expose، emits، پراپس.

منابع: Lifecycle Hooks (W3Schools)، mounted، updated.