مرحبًا بكم مرة أخرى أيها الأصدقاء!
سنتناول اليوم أساسيات خطاف React المسمى useContext. useContext هي أداة قوية تتخطى useState لإنشاء حالة شبيهة بالعالمية يمكنها تمرير المعلومات إلى المكونات الفرعية والأحفاد دون تمرير الخاصيات مباشرةً.
لكنني أتقدم على نفسي.
إذا لم تكن على دراية بـ useState، فانتقل واقرأ مقالتي السابقة أولاً، ثم عد واستعد لتندهش!
كيفية استخدام "useState": https://dev.to/deborah/how-to-use-state-in-react-2pah
الآن بعد أن أصبحت على دراية بـ "useState"، دعنا نتعمق في "useContext"!
يعد useContext مثاليًا للبيانات التي يجب وضعها على نطاق عالمي (مثل اسم المستخدم الذي سيبقي شخصًا ما مسجلاً للدخول طوال التطبيق بالكامل) ولكنه ليس الاختصار الشامل لـ تمرير الدعائم إلى مكونات الأطفال.
ومع ذلك، فإن useContext يسمح لنا بتمرير البيانات دون تمرير الخاصيات مباشرة، وبالتالي فهو مفيد للغاية عندما نواجه بيانات تحتاج إلى الوصول إليها بواسطة العديد من المكونات الفرعية أو إتاحتها عبر التطبيق بأكمله.
من أجل تشغيل useContext، نحتاج إلى اتخاذ خطوتين: أولاً، نحتاج إلى إنشاء كائن سياق ("createContext")، ثم نحتاج إلى الوصول إلى القيمة عبر موفر باستخدام الخطاف "useContext" .
تم تبسيط الأمثلة التالية لإعطائك فكرة أفضل عن ماهية useContext وكيفية استخدامه، ولكن يجب أن تدرك أن createContext غالبًا ما يتم الإعلان عنه في ملف منفصل خاص به. ومع ذلك، فأنا أشبه "Parent.js" بملف "App.js" النموذجي (مكون في أعلى التسلسل الهرمي للمكونات). Parent.js هو المكان الذي قمت فيه بتحديد جميع متغيرات الحالة الخاصة بي، والوظائف التي تعمل على تحديث متغيرات الحالة هذه، وإحضارها إلى قاعدة البيانات باستخدام useEffect. لقد اخترت الإعلان عن createContext في مكون المستوى الأعلى الخاص بي بدلاً من إنشاء ملف خاص به لتبسيط هذا الشرح حتى تتمكن من فهم المفاهيم الأساسية للسياق بشكل أفضل.
export Context = React.createContext();
"السياق" هو كائن سياق تم إنشاؤه عن طريق استدعاء "createContext". يحتوي كائن السياق على مكون يسمى Provider والذي سنكون قادرين الآن على استدعائه ثم تمرير المتغيرات والوظائف التي نريد الاحتفاظ بها على مستوانا "العالمي".
return(// Other JSX & the child components we want to hand Context to. );
لإكمال "Context.Provider"، نحتاج أيضًا إلى تقديم قيمة إلى "Provider". هذا هو المكان الذي سنمرر فيه كائنًا يحتوي على جميع المتغيرات والوظائف التي سنستدعيها بـ "السياق" في المكونات الفرعية:
return(// Other JSX & the child components we want to hand Context to. );
من المهم جدًا ملاحظة أننا بحاجة إلى وضع جميع المكونات الفرعية التي ستستخدم المتغيرات والوظائف بين العلامات. على سبيل المثال:
return();
لاحظ أننا لا نحتاج إلى تمرير أي خاصيات مباشرة إلى المكونات الفرعية (كما نفعل مع 'useState') طالما أننا نضع الخاصيات داخل 'value'.
الآن بعد أن استخدمنا createContext وقمنا بتمرير جميع العناصر العامة لدينا إلى "Context.Provider"، نحن مستعدون للانتقال إلى المكونات الفرعية ومعرفة كيفية استخدام "Context".
import Context from ‘./Parent.js’;
import React, { useContext } from ‘react’; import Context from ‘./Parent.js’;
import React, { useContext } from ‘react’; import Context from ‘./Parent.js’; function Child(){ const { example, setExample } = useContext(Context) // The rest of our code
في هذا الكود نستخدم الأقواس المتعرجة {} للدلالة على مهمة التدمير. هذه طريقة رائعة للقول إننا قادرون على استدعاء متغيرات ووظائف متعددة مخزنة في السياق. نقوم أيضًا بتمرير "السياق" إلى "useContext" حتى نتمكن من الوصول إلى القيم المحددة في context.Provider (التي أعلنا عنها في "Parent.js").
const expId = example.id;
أو
setExample(newExample);
تهانينا! لديك الآن جميع الأدوات اللازمة للبدء في استخدام createContext وuseContext. أنت تدرك أن useContext يسمح لك بإنشاء شيء من "الحالة العامة" التي يمكنها تمرير المتغيرات والوظائف إلى المكونات دون تمرير الدعائم مباشرة عبر المكونات الفرعية.
لقد بحثنا أيضًا في الخطوات الست المطلوبة لتشغيل السياق في تطبيقاتك. أنت الآن جاهز لبدء البرمجة باستخدام createContext وuseContext، ولكن إذا كنت بحاجة إلى دليل البدء السريع، فإليك ما يلي:
export const Context = React.createContext();
//Child components
import React, { useContext } from ‘react’;
import Context from “./Parent.js’;
const { example, handleExample } = useContext(Context);
ملاحظة أخيرة، إذا كنت ترغب في التعمق أكثر في هذا الموضوع، فإليك موارد التوثيق الرسمية التي أشرت إليها أيضًا أثناء تعلم useContext وكتابة هذه المدونة:
التوثيق الرسمي:
https://react.dev/reference/react/createContext
الوثائق الرسمية القديمة، لا تزال مفيدة إلى حد ما لفهم سياق الاستخدام:https://legacy.reactjs.org/docs/context.html
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3