فرض کنید میخواهید لیست کاربران فعال را نمایش دهید:
function UsersList({ users }) { const activeUsers = users.filter( user => user.active ); return ( <div> {activeUsers.map(user => ( <UserCard key={user.id} user={user} /> ))} </div> ); } کد کاملاً درست به نظر میرسد...
اما یک نکته وجود دارد:
در هر Render کامپوننت، عملیات ()filter دوباره اجرا میشود.
اگر:
✅ ۱۰۰ کاربر داشته باشید
مشکلی نیست.
اما اگر:
🔥 ۱۰,۰۰۰ کاربر داشته باشید
یا
🔥 چندین بار در ثانیه Render اتفاق بیفتد
هزینه پردازش بهسرعت افزایش پیدا میکند.
راه حرفهای:
const activeUsers = useMemo( () => users.filter( user => user.active ), [users] );
🎯هوک useMemo باعث میشود محاسبه فقط زمانی انجام شود که دادهها تغییر کرده باشند.
نکته مهم:
❌ از useMemo برای همه چیز استفاده نکنید.
✅ فقط برای محاسبات سنگین یا دادههای بزرگ.
💡 یکی از تفاوتهای توسعهدهندگان حرفهای Frontend این است که فقط به «درست کار کردن» فکر نمیکنند؛ به «هزینه اجرای کد» هم فکر میکنند.
#ReactJS #JavaScript #Frontend
@CodeVerse_dev