ReactJS، مكتبة JavaScript شائعة لبناء واجهات المستخدم، تقدم خطافات لتبسيط وتعزيز منطق المكونات. أحد الخطافات الأكثر استخدامًا في React هو الخطاف useState، الذي يدير حالة المكون. يمكن أن يساعدك فهم كيفية عمل ذلك في إطلاق العنان للإمكانات الكاملة لـ React.
في دليل المبتدئين هذا، سنستكشف ماهية الخطافات، وكيفية تهيئة الحالة وتحديثها باستخدام useState، والتعمق في الاحتفاظ بأنواع مختلفة من الحالات وتحديثها. وفي النهاية، ستكون قادرًا على إدارة الحالة داخل مكوناتك بثقة. هيا بنا!
الخطافات هي وظائف تسمح لك باستخدام state وميزات React الأخرى دون كتابة مكون فئة. قبل الخطافات، كانت إدارة حالة المكون ممكنة فقط داخل مكونات الفئة. باستخدام خطافات مثل useState، يمكنك إضافة حالة إلى المكونات الوظيفية، مما يجعلها أكثر تنوعًا.
يوفر React العديد من الخطافات، مثل:
تعمل الخطافات على تبسيط إدارة الحالة وتقليل الحاجة إلى المكونات المعقدة القائمة على الفئة. يكمن جمال الخطافات في قدرتها على توفير الوظائف التي تحتاجها مع الحفاظ على كود أكثر وضوحًا وأكثر قابلية للقراءة.
يعد تهيئة useState في مكون وظيفي أمرًا بسيطًا. يبدأ الأمر باستيراد الخطاف من React واستدعائه داخل المكون الخاص بك. يبدو بناء الجملة كما يلي:
import React, { useState } from 'react'; function Counter() { // Declare state variable and its updater function const [count, setCount] = useState(0); return (); }You clicked {count} times
قراءة الحالة الحالية واضحة ومباشرة. يمكنك ببساطة استخدام متغير الحالة (العدد في المثال السابق) مباشرةً داخل JSX. نظرًا لأن React تعيد عرض المكون عندما تتغير الحالة، فإن القيمة المحدثة تنعكس تلقائيًا في واجهة المستخدم.
دعونا نعدل مثالنا السابق لإظهار كيف يمكننا الوصول إلى الحالة:
Current count: {count}
يصل هذا الرمز إلى حالة العد ويعرضها ديناميكيًا.
يتم تحديث الحالة في React باستخدام العنصر الثاني من useState، وهو وظيفة الضبط. تأخذ هذه الوظيفة القيمة المحدثة وتعيد عرض المكون بهذه الحالة الجديدة.
إليك مثال لكيفية زيادة العداد وإنقاصه:
يضمن React أنه كلما تم تحديث الحالة، تنعكس التغييرات في واجهة المستخدم بسلاسة. من المهم أن تتذكر أن تحديثات الحالة غير متزامنة في React، مما يعني أنك لن ترى دائمًا الحالة المحدثة فورًا بعد استدعاء وظيفة الإعداد.
يمكن للحالة في React الاحتفاظ بمجموعة متنوعة من أنواع البيانات، بما في ذلك:
دعونا نلقي نظرة على أمثلة على ذلك:
const [name, setName] = useState("John");
const [items, setItems] = useState([1, 2, 3]);
const [user, setUser] = useState({ name: "John", age: 30 });
يسمح لك خطاف useState الخاص بـ React بإدارة هذه الأنواع المختلفة من البيانات، ولكن يجب توخي الحذر عند تحديث الأنواع المعقدة، مثل الكائنات والمصفوفات، كما سنستكشف لاحقًا.
عند العمل مع الكائنات أو المصفوفات في React، من الضروري تحديثها بشكل ثابت. لا تقارن React الكائنات المتداخلة بعمق، لذا فإن تعديل الكائن مباشرةً لن يؤدي إلى إعادة التصيير. بدلاً من ذلك، يجب عليك إنشاء كائن جديد أو صفيف بالقيم المحدثة.
const [user, setUser] = useState({ name: "John", age: 30 }); function updateName() { setUser(prevState => ({ ...prevState, name: "Doe" })); }
في هذا المثال:
const [items, setItems] = useState([1, 2, 3]); function addItem() { setItems(prevItems => [...prevItems, 4]); }
هنا:
تعمل الخطافات، مثل useState، على تبسيط إدارة الحالة داخل المكونات الوظيفية، مما يجعل التعليمات البرمجية أكثر قابلية للقراءة وأقل فوضى مقارنة بمكونات الفئة.
نعم، يمكن أن يحتوي useState على سلاسل، وأرقام، ومصفوفات، وكائنات، وقيم منطقية، وحتى قيم فارغة أو غير محددة.
نعم، يتم تحديث دفعات React إلى الحالة، وقد لا تنعكس التغييرات فورًا بعد استدعاء وظيفة الضبط.
لتجنب تغيير الحالة الأصلية، قم دائمًا بإنشاء نسخة من الكائن أو المصفوفة، ثم قم بتحديثها بشكل ثابت باستخدام عامل الانتشار (...).
يعد خطاف useState واحدًا من أقوى الخطافات وأكثرها استخدامًا في React. فهو يساعدك على إدارة الحالة المحلية ضمن المكونات الوظيفية، مما يجعل كود React الخاص بك أكثر وضوحًا وكفاءة. سواء كنت تتعامل مع متغيرات بسيطة أو كائنات ومصفوفات معقدة، فإن فهم كيفية استخدام الحالة وتحديثها بشكل صحيح هو المفتاح لبناء تطبيقات React الديناميكية. استمر في التدريب، وسرعان ما ستتقن إدارة حالة React بسهولة!
الآن بعد أن انتقلت من الصفر إلى البطل باستخدام useState، حاول دمجه في مشاريعك وشاهد سحر React أثناء العمل!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3