useCallback دوباره این هم واسه پرفورمنس تو شرایط خاصه، ممکنه منطقی… — Persian Developer Network — TG.ME

useCallback

دوباره این هم واسه پرفورمنس تو شرایط خاصه، ممکنه منطقی نباشه که چه کاربردی داره وقتی تازه شروع کردین ولی در آینده متوجهش میشید.

کاربرد: جلوگیری از ایجاد مجدد یک تابع در هر رندر، مخصوصاً وقتی تابع را به کامپوننت فرزند ارسال کنیم. (حواستون باشه اینجا ساخت مجدد تابعه، نه اجراش!)

نحوه استفاده:

const handleClick = useCallback(() => {
doSomething(id);
}, [id]);

چرا ساخت مجدد اهمیت داره؟ چون ما خیلی وقت ها state رو تو والد تعریف میکنیم و setter رو میدیم به فرزند.
حالا می‌خوایم فرزند با ریرندر والد، ریرندر نشه. میایم فرزند رو React.memo میکنیم و فقط و فقط تو این حالت، چون setter به شکل پراپ داده شده به فرزند و با تغییر پراپ React.memo کار نمیکنه، میایم پراپ که تابع setter هست رو میکنیم توی useCallback.
اینجوری با تغییر والد تابع مجدد تعریف نمیشه، setter تغییر نمیکنه، پراپ تغییر نمیکنه و فرزند ریرندر نمیشه.
این هوک معمولا مکمل React.memo تو شرایط خاصه

استفاده بی رویه نباید بشه چون اینم سربار محاسباتی داره و میشه ضرر.
اگر وابستگی‌ها تغییر کنند، تابع دوباره ساخته میشه.

#react
#next
@persiandn
❤2👎1
August 29, 2026 78