مثال عملي: إدارة حالة اللغة
1. إنشاء السياق
أولاً، نقوم بإنشاء سياق جديد لإدارة حالة اللغة.
// LanguageContext.js import { createContext } from 'react';
export const LanguageContext = createContext('en');
|
2. توفير قيمة السياق
نقوم بلف المكونات في Provider
لتوفير قيمة السياق.
// App.js import React, { useState } from 'react'; import { LanguageContext } from './LanguageContext'; import Page from './Page';
function App() { const [language, setLanguage] = useState('en');
const toggleLanguage = () => { setLanguage((prevLanguage) => (prevLanguage === 'en' ? 'ar' : 'en')); };
return ( <LanguageContext.Provider value={{ language, toggleLanguage }}> <Page /> </LanguageContext.Provider> ); }
export default App;
|
3. قراءة قيمة السياق
نستخدم useContext
لقراءة قيمة السياق في مكون فرعي.
// LanguageSwitcher.js import React, { useContext } from 'react'; import { LanguageContext } from './LanguageContext';
function LanguageSwitcher() { const { language, toggleLanguage } = useContext(LanguageContext); return ( <button onClick={toggleLanguage}> {language === 'en' ? 'Switch to Arabic' : 'Switch to English'} </button> ); }
export default LanguageSwitcher;
|
4. استخدام المكونات
نقوم بدمج المكونات معًا.
// Page.js import React, { useContext } from 'react'; import { LanguageContext } from './LanguageContext'; import LanguageSwitcher from './LanguageSwitcher';
function Page() { const { language } = useContext(LanguageContext); return ( <div> <h1>{language === 'en' ? 'Hello, World!' : 'مرحبا بالعالم!'}</h1> <LanguageSwitcher /> </div> ); }
export default Page;
|
شرح الكود
- LanguageContext.js: نقوم بإنشاء سياق جديد لإدارة حالة اللغة.
- App.js: نستخدم
LanguageContext.Provider
لتوفير قيمة السياق لجميع المكونات داخل Page
. كما أضفنا دالة toggleLanguage
لتغيير اللغة. - LanguageSwitcher.js: نستخدم
useContext
لقراءة قيمة السياق وتغيير اللغة عند الضغط على الزر. - Page.js: نستخدم
useContext
لقراءة قيمة السياق وعرض النص بناءً على اللغة الحالية.
النتيجة
عند تشغيل التطبيق، سيعرض مكون Page
النص بناءً على اللغة الحالية. عند الضغط على الزر، ستتغير اللغة بين الإنجليزية والعربية، وسيتم إعادة تصيير النص ليعكس اللغة الجديدة.
تعليقات
إرسال تعليق