وب سایت عباس باقری

وب سایت شخصی عباس باقریوب سایت شخصی عباس باقری

هوک useRef در ریکت

هوک useRef در ریکت

زمان مطالعه : 2 دقیقه

هوک useRef امکان ایجاد رفرنسی از یک مقدار بین ریرندرهای مختلف را می‌دهد.

با هربار تغییر استیت، کامپوننت ریرندر می‌شود، و بدنه آن دوباره اجرا می‌شود. در مثال زیر، با هربار رندر شدن کامپوننت App مقدار id متفاوت خواهد بود:

هوک useRef در ریکت
هوک useRef در ریکت

برای حفظ شدن مقدار id بین ریرندرهای مختلف می‌توان از useState یا سایر هوکها استفاده کرد، اما با تغییر id مجددا کامپوننت App ریرندر خواهد شد:

هوک useRef در ریکت
هوک useRef در ریکت

با کمک هوک useRef می‌توان رفرنسی از یک مقدار ایجاد کرد که با ریرندر شدن کامپوننت مقدارش حفظ شده و تاثیری روی رندر شدن کامپوننت نداشته باشد:

هوک useRef داری یک ورودی اختیاری است، که مقدار اولیه ref را دریافت میکند و یک رفرنس به عنوان خروجی برمیگرداند.

هوک useRef در ریکت
هوک useRef در ریکت

درمثال بالا مقدار idRef بین رندرهای مختلف ثابت است و با آپدیت مقدار آن، ریرندر جدیدی رخ نمی‌دهد. همچنین کاربرد دیگر ref دستکاری DOM بدون تاثیرات رندری است:

هوک useRef در ریکت

ابتدا بوسیله هوک useRef یک ref بنام inputRef ایجاد کردیم، و آنرا از طریق پراپ ref به هرکدام از node های jsx پاس میدهیم. در این مثال به input دادیم. اکنون با استفاده inputRef میتوانیم input خود در dom را دستکاری کنیم. در ادامه مقایسه ای بین گرفتن مقدار input از طریق state و ref انجام میدهیم.

هوک useRef در ریکت
هوک useRef در ریکت

در مثال بالا، با هربار تایپ کاراکتر در اینپوت، کامپوننت App ریرندر می‌شود.

هوک useRef در ریکت
هوک useRef در ریکت

در مثال بالا، با تغییر مقدار اینپوت، ریرندری صورت نمیگیرد.