useRef هو خطاف React الذي يسمح بإنشاء مرجع ثابت لقيمة أو عنصر DOM. على عكس useState، الذي يُستخدم لإدارة الحالة التي تؤدي إلى إعادة العرض، يُستخدم useRef بشكل أساسي للتأثيرات الجانبية أو الوصول إلى عناصر DOM مباشرةً.
يعتبر خطاف useRef مفيدًا بشكل خاص لـ:
يقوم الخطاف useRef بإرجاع كائن ذو خاصية .current. عند استدعاء useRef، فإنه ينشئ مرجعًا ثابتًا للقيمة التي تمررها كوسيطة. يتم تخزين هذا المرجع في الخاصية .current للكائن الذي تم إرجاعه.
لإنشاء مرجع، ما عليك سوى الاتصال بـ useRef بالقيمة الأولية.
import { useRef} from 'react' const App = () => { const countRef = useRef(0) return (...) } export default App
في المثال أعلاه countRef هو إشارة إلى القيمة الأولية 0.
للوصول إلى القيمة المرجعية، ما عليك سوى استدعاء كائن countRef باستخدام الخاصية .current
import { useRef} from 'react' const App = () => { const countRef = useRef(0) const increment = () => { countRef.current } return () } export default AppCount: {countRef.current}
في المثال أعلاه، إذا قمت بالنقر فوق الزر، فسيتم استدعاء وظيفة الزيادة التي ستزيد من countRef، ولكن لن يتم تحديث العدد في
Count: {countRef.current}
بسبب تحديث useRef لا تتسبب في إعادة العرض مثل useState.قم بتحديث الكود إلى المثال أدناه للحصول على النتيجة التي تتوقعها.
import { useRef, useState } from 'react' const App = () => { const countRef = useRef(0) const [count, setCount] = useState(0) const increment = () => { countRef.current setCount(countRef.current) } return () } export default AppCount: {count}
من الممكن استخدام خطاف useRef للوصول إلى خصائص عناصر html وتغييرها
const App = () => { const inputRef = useRef(null) const handleFocus = () => { inputRef.current.focus() } return( ) }
بخلاف useState أو المتغير، يمكن لـ useRef تمرير القيم والبيانات بين عمليات إعادة العرض مثل البيانات المخزنة مؤقتًا أو إعدادات التكوين.
في بعض الحالات، يمكن أن يساعد استخدام useRef في تحسين المكونات عن طريق تجنب عمليات إعادة العرض غير الضرورية. كما لو كان لديك مكونًا يعرض قائمة كبيرة من العناصر، يمكنك تخزينه مؤقتًا باستخدام useRef وتعديله فقط وإعادة عرض العناصر التي تغيرت.
إذا حاولت تمرير مرجع إلى المكون الخاص بك مثل هذا
const inputRef = useRef(null); return;
قد تحصل على خطأ في وحدة التحكم:
تحذير: لا يمكن إعطاء مراجع لمكونات الوظيفة. ستفشل محاولات الوصول إلى هذا المرجع. هل تقصد استخدام React.forwardRef()؟
لحل هذه المشكلة، قم بلف المكون المخصص باستخدام ForwardRef كما يلي:
const inputRef = useRef(null); return;
المكون المخصص:
import { forwardRef } from 'react'; const MyInput = forwardRef(({ value, onChange }, ref) => { return ( ); }); export default MyInput;
useRef هو خطاف قوي يستخدم بشكل أساسي لاستخدام التأثيرات الجانبية مثل تخزين البيانات مؤقتًا بين عمليات إعادة العرض أو الوصول إلى عناصر DOM. إنها أداة رائعة لتحسين الأداء وتحقيق وظائف محددة في تطبيق React.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3