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

 

الخطوات الأساسية

  1. إنشاء السياق باستخدام createContext.
  2. توفير قيمة السياق باستخدام Provider.
  3. قراءة قيمة السياق باستخدام useContext.


مثال عملي

1. إنشاء السياق

أولاً، نقوم بإنشاء سياق جديد باستخدام createContext.

// ThemeContext.js
import { createContext } from 'react';

export const ThemeContext = createContext('light');


2. توفير قيمة السياق

نقوم بلف المكونات في Provider لتوفير قيمة السياق.

// App.js
import React, { useState } from 'react';
import { ThemeContext } from './ThemeContext';
import Page from './Page';

function App() {
  const [theme, setTheme] = useState('dark');

  const toggleTheme = () => {
    setTheme((prevTheme) => (prevTheme === 'dark' ? 'light' : 'dark'));
  };

  return (
    <ThemeContext.Provider value={{ theme, toggleTheme }}>
      <Page />
    </ThemeContext.Provider>
  );
}

export default App;



3. قراءة قيمة السياق

نستخدم useContext لقراءة قيمة السياق في مكون فرعي.

// Button.js
import React, { useContext } from 'react';
import { ThemeContext } from './ThemeContext';

function Button() {
  const { theme, toggleTheme } = useContext(ThemeContext);
  return <button className={theme} onClick={toggleTheme}>Click me</button>;
}

export default Button;



4. استخدام المكونات

نقوم بدمج المكونات معًا.

// Page.js
import React from 'react';
import Button from './Button';

function Page() {
  return (
    <div>
      <h1>Welcome to the themed page!</h1>
      <Button />
    </div>
  );
}

export default Page;



شرح المثال 

  1. ThemeContext.js: نقوم بإنشاء سياق جديد بقيمة افتراضية ‘light’.
  2. App.js: نستخدم ThemeContext.Provider لتوفير قيمة السياق ‘dark’ لجميع المكونات داخل Page.
  3. Button.js: نستخدم useContext لقراءة قيمة السياق وتطبيقها على زر.
  4. Page.js: نعرض مكون Button داخل صفحة.

بهذا الشكل، يمكننا تمرير البيانات بين المكونات بسهولة باستخدام createContext و useContext.




مثال على CSS لتوضيح التغيير

يمكنك إضافة بعض الأنماط لتوضيح التغيير بشكل أفضل:

/* styles.css */
button.dark {
  background-color: black;
  color: white;
}

button.light {
  background-color: white;
  color: black;
}


تعليقات

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

ما هو JSX في React؟

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

عرض القوائم باستخدام JSX في React.

مفهوم إعادة الاستخدام (Reusability)

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

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

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

عرض البيانات باستخدام JSX في React

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