دوباره این هم واسه پرفورمنس تو شرایط خاصه، ممکنه منطقی نباشه که چه کاربردی داره وقتی تازه شروع کردین ولی در آینده متوجهش میشید.
کاربرد: جلوگیری از ایجاد مجدد یک تابع در هر رندر، مخصوصاً وقتی تابع را به کامپوننت فرزند ارسال کنیم. (حواستون باشه اینجا ساخت مجدد تابعه، نه اجراش!)
نحوه استفاده:
const handleClick = useCallback(() => {
doSomething(id);
}, [id]);چرا ساخت مجدد اهمیت داره؟ چون ما خیلی وقت ها state رو تو والد تعریف میکنیم و setter رو میدیم به فرزند.
حالا میخوایم فرزند با ریرندر والد، ریرندر نشه. میایم فرزند رو React.memo میکنیم و فقط و فقط تو این حالت، چون setter به شکل پراپ داده شده به فرزند و با تغییر پراپ React.memo کار نمیکنه، میایم پراپ که تابع setter هست رو میکنیم توی useCallback.
اینجوری با تغییر والد تابع مجدد تعریف نمیشه، setter تغییر نمیکنه، پراپ تغییر نمیکنه و فرزند ریرندر نمیشه.
این هوک معمولا مکمل React.memo تو شرایط خاصه
استفاده بی رویه نباید بشه چون اینم سربار محاسباتی داره و میشه ضرر.
اگر وابستگیها تغییر کنند، تابع دوباره ساخته میشه.
#react
#next
@persiandn

