مثال بسيط يوضح كيفية استخدام 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؟

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

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

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

ما هي Props في React؟

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

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

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

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