مثالًا آخر يوضح كيفية استخدام createContext و useContext لتمرير البيانات بين المكونات في React.

 

مثال عملي: إدارة حالة اللغة

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;


شرح الكود

  1. LanguageContext.js: نقوم بإنشاء سياق جديد لإدارة حالة اللغة.
  2. App.js: نستخدم LanguageContext.Provider لتوفير قيمة السياق لجميع المكونات داخل Page. كما أضفنا دالة toggleLanguage لتغيير اللغة.
  3. LanguageSwitcher.js: نستخدم useContext لقراءة قيمة السياق وتغيير اللغة عند الضغط على الزر.
  4. Page.js: نستخدم useContext لقراءة قيمة السياق وعرض النص بناءً على اللغة الحالية.


النتيجة

عند تشغيل التطبيق، سيعرض مكون Page النص بناءً على اللغة الحالية. عند الضغط على الزر، ستتغير اللغة بين الإنجليزية والعربية، وسيتم إعادة تصيير النص ليعكس اللغة الجديدة.

تعليقات

المشاركات الشائعة

ما هو JSX في React؟

مثال بسيط يوضح كيفية استخدام createContext و useContext لتمرير البيانات بين المكونات في React

مثال لتمرير مصفوفة عن طريق useState

إضافة الأنماط في React

المكونات (Components) في React

ما هي Props في React؟

هيكلة المشروع في React

الأمر npx create-react-app my-app

10 أمثلة على استخدام props في React

تطبيق توليد لون عشوائي للصفحة في React