هوک های چرخه عمر (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>
گام های عملی پیشنهادی
- کار با DOM را در
mountedانجام بده. - منطق پاک سازی را در
beforeUnmountقرار بده. - برای دیباگ، تفاوت
beforeUpdateوupdatedرا لاگ کن.
نکته: در سرور، از serverPrefetch برای داده اولیه استفاده می شود.
هشدار: به DOM قبل از mounted دسترسی نگیر؛ عنصر هنوز حاضر نیست.
جمع بندی سریع
mountedیعنی DOM آماده است.updatedبعد از رندر جدید است.beforeUnmountبرای جمع وجور کردن است.- هوک ها زمان بندی امن اجرا می دهند.
لینک های داخلی: expose، emits، پراپس.
منابع: Lifecycle Hooks (W3Schools)، mounted، updated.