في مجال تطوير React، فإنuseContextلقد ظهر الخطاف باعتباره أداة تغير قواعد اللعبة، مما يبسط بشكل كبير الطريقة التي نستخدم بها السياق. باعتباري مزودًا للخطافات عالية الجودة، فقد شهدت بنفسي كيف أدى هذا الابتكار في React إلى تحويل عملية التطوير. في هذه المدونة، سوف نتعمق في كيفيةuseContextيعمل الخطاف على تبسيط استخدام السياق وسبب كونه أداة ضرورية لتطبيقات React الحديثة.
استخدام السياق التقليدي
قبل تقديم الخطافات في React، كان استخدام السياق ينطوي على عملية أكثر تعقيدًا. يعد السياق في React طريقة لمشاركة البيانات بين المكونات دون الحاجة إلى تمرير الخاصيات يدويًا عبر كل مستوى من مستويات شجرة المكونات. يعد هذا مفيدًا بشكل خاص للبيانات التي تحتاجها العديد من المكونات في أجزاء مختلفة من التطبيق، مثل حالة مصادقة المستخدم أو إعدادات السمة أو تفضيلات اللغة.
دعونا نلقي نظرة على مثال بسيط لاستخدام السياق دونuseContextخطاف. لنفترض أن لدينا تطبيقًا نريد فيه مشاركة قيمة السمة عبر مكونات متعددة.
// إنشاء سياق const ThemeContext = React.createContext(); // مكون يوفر السياق const ThemeProvider = ({ children }) => { const theme = "dark"; return ( <ThemeContext.Provider value={theme}> {children} </ThemeContext.Provider> ); }; // المكون الذي يستهلك فئة السياق ThemeConsumer Extends React.Component { render() { return ( <ThemeContext.Consumer> {theme => ( <div> السمة الحالية هي {theme} </div> )} </ThemeContext.Consumer> ); } } // الاستخدام const App = () => { return ( <ThemeProvider> <ThemeConsumer /> </ThemeProvider> ); }; ReactDOM.render(<App />, document.getElementById('root'));
في هذا المثال، نقوم أولاً بإنشاء سياق باستخدامرد الفعل. createContext(). ثم لدينا مكون موفر يلتف حول أطفاله ويوفر قيمة السياق. يستخدم مكون المستهلكThemeContext.Consumerللوصول إلى قيمة السياق. هذا النهج له عيوب عديدة. فهو يجعل التعليمات البرمجية أكثر تفصيلاً، خاصة عند التعامل مع سياقات متعددة. بالإضافة إلى ذلك، قد يكون من الصعب قراءتها وفهمها، خاصة بالنسبة للمطورين الجدد في React.
أدخلuseContextخطاف
الuseContextيعمل الخطاف على تبسيط عملية استهلاك السياق. فهو يسمح لنا بالوصول إلى قيمة السياق مباشرة داخل مكون وظيفي دون الحاجة إلى استخداممستهلكعنصر.
دعونا نعيد كتابة المثال السابق باستخدامuseContextخطاف:


// إنشاء سياق const ThemeContext = React.createContext(); // مكون يوفر السياق const ThemeProvider = ({ children }) => { const theme = "dark"; return ( <ThemeContext.Provider value={theme}> {children} </ThemeContext.Provider> ); }; // مكون يستهلك السياق باستخدام useContext const ThemeConsumer = () => { const theme = React.useContext(ThemeContext); return (<div> الموضوع الحالي هو {theme} </div> ); }; // الاستخدام const App = () => { return ( <ThemeProvider> <ThemeConsumer /> </ThemeProvider> ); }; ReactDOM.render(<App />, document.getElementById('root'));
كما ترون،ThemeConsumerأصبح المكون الآن أبسط بكثير. نحن نستخدمuseContextربط للوصول مباشرة إلى قيمة السياق. وهذا يجعل الكود أكثر إيجازًا وأسهل في القراءة.
فوائد الاستخدامuseContextخطاف
1. الإيجاز
الuseContextهوك يلغي الحاجة إلىمستهلكمكون، مما يقلل من كمية التعليمات البرمجية المعيارية. في النهج التقليدي، كان علينا تغليف المحتوى الخاص بنا داخل ملفمستهلكواستخدم وظيفة للوصول إلى قيمة السياق. معuseContextيمكننا الوصول إلى القيمة في سطر واحد من التعليمات البرمجية.
2. سهولة القراءة
يصبح الكود أكثر قابلية للقراءة لأنه من الواضح في لمحة سريعة أين يتم الوصول إلى قيمة السياق. في النهج التقليدي،مستهلكيمكن للمكون أن يجعل التعليمات البرمجية متداخلة ويصعب متابعتها، خاصة في التطبيقات الكبيرة.
3. تكامل أسهل مع المكونات الوظيفية
نظرًا لأن React تشجع استخدام المكونات الوظيفية، فإنuseContextيتناسب الخطاف تمامًا مع هذا النموذج. يسمح لنا باستخدام السياق في المكونات الوظيفية دون الحاجة إلى تحويلها إلى مكونات فئة.
4. سياقات متعددة
عند التعامل مع سياقات متعددة، فإنuseContextهوك يضيء. في النهج التقليدي، يتطلب استخدام سياقات متعددة تداخلًا متعددًامستهلكالمكونات، والتي يمكن أن تصبح فوضى بسرعة. معuseContextيمكننا الوصول إلى سياقات متعددة بشكل مستقل ونظيف.
const ThemeContext = React.createContext(); const UserContext = React.createContext(); const ThemeProvider = ({ children }) => { const theme = "dark"; return ( <ThemeContext.Provider value={theme}> {children} </ThemeContext.Provider> ); }; const UserProvider = ({ children }) => { const user = { name: "John" }; return ( <UserContext.Provider value={user}> {children} </UserContext.Provider> ); }; const MultiContextConsumer = () => { const theme = React.useContext(ThemeContext); const user = React.useContext(UserContext); return ( <div> السمة الحالية هي {theme} والمستخدم هو {user.name} </div> ); }; const App = () => { return ( <ThemeProvider> <UserProvider> <MultiContextConsumer /> </UserProvider> </ThemeProvider> ); }; ReactDOM.render(<App />, document.getElementById('root'));
عروض السنانير لدينا
باعتبارنا مزودًا للخطافات، فإننا نقدم مجموعة واسعة من الخطافات عالية الجودة لتطبيقات مختلفة. سواء كنت تبحث عنخطافات بيجبوردلتنظيم رفوف السوبر ماركت الخاصة بك أوخطاف سلاتوالللحصول على حل عرض أكثر تنوعًا، نحن نوفر لك كل ما تحتاجه. تم تصميم خطافاتنا لتكون متينة وسهلة التركيب وممتعة من الناحية الجمالية.
خاتمة
الuseContextلقد أحدث الخطاف ثورة في الطريقة التي نستخدم بها السياق في تطبيقات React. فهو يبسط التعليمات البرمجية، ويجعلها أكثر قابلية للقراءة، ويتكامل بسلاسة مع المكونات الوظيفية. سواء كنت مبتدئًا أو مطورًا ذو خبرة في React، فإنuseContextيعد الخطاف أداة قوية يمكنها تحسين عملية التطوير الخاصة بك.
إذا كنت مهتمًا بمنتجات Hooks الخاصة بنا، فنحن ندعوك للتواصل معنا لإجراء مناقشة حول الشراء. نحن ملتزمون بتقديم أفضل الحلول لاحتياجاتك.
مراجع
- رد فعل الوثائق الرسمية على السياق والخطافات
- رد الفعل في العمل من قبل مارك توماس
