ما هي تعريفات النوع لـ React Hooks في TypeScript؟

Dec 15, 2025ترك رسالة

مرحبًا يا من هناك! كمورد للخطافات، تلقيت الكثير من الأسئلة مؤخرًا حول تعريفات النوع لـ React Hooks في TypeScript. لذا، فكرت في الجلوس وكتابة تدوينة لمشاركة ما أعرفه.

أولاً، دعونا نتحدث عن سبب أهمية تعريفات الكتابة عند العمل باستخدام React Hooks في TypeScript. TypeScript عبارة عن مجموعة شاملة مكتوبة من JavaScript تضيف كتابة ثابتة إلى اللغة. هذا يعني أنه يمكنك اكتشاف الأخطاء مبكرًا في عملية التطوير من خلال التحديد الواضح لأنواع المتغيرات ومعلمات الوظائف والقيم المرجعة. عند استخدام React Hooks، وهي ميزة جديدة وقوية نسبيًا في React، فإن وجود تعريفات النوع المناسبة يمكن أن يجعل التعليمات البرمجية الخاصة بك أكثر قوة، وأسهل للفهم، وأقل عرضة للأخطاء.

خطاف useState

لنبدأ معuseStateالخطاف، وهو أحد الخطافات الأكثر استخدامًا في React. الuseStateيتيح لك الخطاف إضافة حالة إلى مكون وظيفي. إليك كيفية تحديد الأنواعuseStateفي تايب سكريبت:

استيراد React، { useState } من 'react'؛ // تحديد نوع الحالة CounterState = number; const Counter: React.FC = () => { // استخدم النوع المحدد للحالة const [count, setCount] = useState<CounterState>(0); زيادة ثابتة = () => { setCount(count + 1); }; return ( <div> <p>العدد: {count}</p> <button onClick={increment}>Increment</button> </div> ); }; تصدير العداد الافتراضي؛

في هذا المثال، نقوم أولاً بتعريف النوعالدولة المضادةوالذي يمثل نوع الحالة التي نريد استخدامها. ثم عند الاتصال بالرقمuseStateهوك، نحدد معلمة النوع<الدولة المضادة>. هذا يخبر TypeScript أن ملفعددالمتغير سيكون من النوعرقم، وsetCountستقبل الوظيفة أرقمكحجة.

استخدام تأثير هوك

الuseEffectيتم استخدام الخطاف لإجراء تأثيرات جانبية في المكونات الوظيفية. عند الاستخدامuseEffectفي TypeScript، لا تحتاج إلى تحديد أي تعريفات للنوع للخطاف نفسه. ومع ذلك، قد تحتاج إلى تحديد أنواع المتغيرات والوظائف المستخدمة داخل ملفuseEffectأتصل مرة أخرى.

استيراد React, { useState, useEffect } من 'react'; اكتب البيانات = { الاسم: سلسلة؛ العمر: العدد؛ }; const DataFetcher: React.FC = () => { const [data, setData] = useState<Data | null>(null); useEffect(() => { const fetchData = async () => { const Response = انتظار الجلب('https://example.com/api/data'); نتيجة const: البيانات = انتظار الاستجابة.json(); setData(result); }; fetchData(); }, []); if (!data) { return <p>جارٍ التحميل...</p>; } return ( <div> <p>الاسم: {data.name}</p> <p>العمر: {data.age}</p> </div> ); }; تصدير DataFetcher الافتراضي؛

في هذا المثال، نحدد النوعبياناتوالذي يمثل شكل البيانات التي نتوقع جلبها. نستخدم هذا النوع عند تعريف الحالةبياناتباستخدامuseStateخطاف. داخلuseEffectرد الاتصال، ونحن نستخدم أيضابياناتtype لتحديد نوعنتيجةمتغير عند تحليل استجابة JSON.

خطاف الاستخدام

الuseContextيتم استخدام الخطاف للوصول إلى السياق في مكون وظيفي. عند الاستخدامuseContextفي TypeScript، تحتاج إلى تحديد نوع السياق.

استيراد React, { createContext, useContext } من 'react'; // تحديد نوع قيمة السياق type ThemeContextType = 'light' | 'مظلم'؛ // أنشئ السياق بالنوع المحدد const ThemeContext = createContext<ThemeContextType>('light'); const ThemeProvider = ThemeContext.Provider; const ThemeDisplay: React.FC = () => { const theme = useContext(ThemeContext); إرجاع <p>الموضوع الحالي: {theme}</p>; }; تطبيق const: React.FC = () => { return ( <ThemeProvider value="dark"> <ThemeDisplay /> </ThemeProvider> ); }; تصدير التطبيق الافتراضي؛

في هذا المثال، نقوم أولاً بتعريف النوعThemeContextTypeالذي يمثل القيم المحتملة للسياق. ثم، عند إنشاء السياق باستخدامcreateContext، نحدد معلمة النوع<ثيميكونتيكستتيبي>. وهذا يضمن أن القيمة المقدمة إلىThemeProviderوالقيمة التي تم الوصول إليها باستخدامuseContextهي من النوع الصحيح.

0153_10154_1

استخدام المخفض هوك

الuseReducerهوك هو بديل لuseStateلإدارة منطق الحالة الأكثر تعقيدًا. عند الاستخدامuseReducerفي TypeScript، تحتاج إلى تحديد أنواع الحالة والإجراء ووظيفة المخفض.

استيراد React، { useReducer } من 'react'؛ // تحديد نوع الحالة type CounterState = { count: number; }; // تحديد نوع الإجراء CounterAction = | { النوع: "زيادة" } | { النوع: "إنقاص" }; // تحديد دالة المخفض بالأنواع const counterReducer = (state: CounterState, action: CounterAction ): CounterState => { Switch (action.type) { case 'increment': return { count:state.count + 1 }; الحالة 'إنقاص': إرجاع { العد: الحالة. العد - 1 }؛ الافتراضي: حالة الإرجاع؛ } }; const Counter: React.FC = () => { const [state, send] = useReducer(counterReducer, { count: 0 }); return ( <div> <p>العدد: {state.count}</p> <button onClick={() => الإرسال({ type: 'increment' })}>الزيادة</button> <button onClick={() => الإرسال({ type: 'decrement' })}>Decrement</button> </div> ); }; تصدير العداد الافتراضي؛

في هذا المثال، نحدد النوعالدولة المضادةالذي يمثل شكل الحالة، ونوعهاالعمل المضادوالذي يمثل الإجراءات المحتملة التي يمكن إرسالها. الcounterReducerتأخذ الوظيفة الحالة الحالية والإجراء كوسائط وترجع حالة جديدة. ومن خلال تحديد هذه الأنواع، فإننا نضمن أنuseReducerالخطاف والوظائف التي تتفاعل معه تستخدم الأنواع الصحيحة.

الخطافات المخصصة وتعريفات النوع

عند إنشاء روابط مخصصة في TypeScript، من المهم أيضًا تحديد تعريفات النوع المناسبة. لنفترض أن لدينا ربطًا مخصصًا للتعامل مع مدخلات النموذج:

استيراد React، { useState } من 'react'؛ // تحديد نوع إدخال النموذج FormInput = { value: string; خطأ: سلسلة | باطل؛ }; // تحديد الخطاف المخصص بالأنواع const useFormInput = (initialValue: string): FormInput => { const [value, setValue] = useState(initialValue); const [خطأ، setError] = useState<string | null>(null); const HandleChange = (e: React.ChangeEvent<HTMLInputElement>) => { setValue(e.target.value); if (e.target.value.length < 3) { setError("يجب أن يكون الإدخال 3 أحرف على الأقل"); } else { setError(null); } }; إرجاع {قيمة، خطأ}؛ }; نموذج const: React.FC = () => { const { value, error } = useFormInput(''); return ( <form> <input type="text" value={value} onChange={handleChange} /> {error && <p style={{ color: 'red' }}>{error}</p>} <button type="submit">إرسال</button> </form> ); }; تصدير النموذج الافتراضي؛

في هذا المثال، نحدد النوعFormInputوالذي يمثل شكل البيانات التي يتم إرجاعها بواسطة الخطاف المخصص. الخطاف المخصصuseFormInputيأخذ قيمة أولية كوسيطة ويعيد كائنًا من النوعFormInput. وهذا يضمن أن المكون الذي يستخدم الارتباط المخصص يمكنه التعامل بشكل صحيح مع البيانات التي تم إرجاعها.

خاتمة

في الختام، يعد استخدام تعريفات النوع المناسبة لـ React Hooks في TypeScript أمرًا ضروريًا لكتابة تعليمات برمجية نظيفة وقابلة للصيانة وخالية من الأخطاء. سواء كنت تستخدم خطافات مدمجة مثلuseState,useEffect,useContext,useReducer، أو إنشاء خطافات مخصصة خاصة بك، فأخذ الوقت الكافي لتحديد الأنواع الصحيحة يمكن أن يوفر عليك الكثير من المتاعب على المدى الطويل.

باعتباري موردًا للخطافات، فإنني أدرك أهمية تقديم منتجات عالية الجودة وموثوقة. نحن نقدم مجموعة واسعة من الخطافات لتلبية احتياجات معدات السوبر ماركت الخاصة بك، بما في ذلكخطافات بيجبوردوخطاف سلاتوال. تم تصميم هذه الخطافات لتكون متينة وعملية وسهلة التركيب، مما يجعلها خيارًا رائعًا لأي سوبر ماركت أو متجر بيع بالتجزئة.

إذا كنت مهتمًا بمعرفة المزيد عن خطافاتنا أو لديك أي أسئلة حول تعريفات النوع لخطافات React في TypeScript، فلا تتردد في التواصل معنا لإجراء محادثة ودية ومناقشة حول المشتريات.

مراجع

  • الرد على الوثائق الرسمية
  • الوثائق الرسمية لـ TypeScript