كيفية استخدام ربط useState مع المصفوفات؟
Dec 18, 2025
ترك رسالة
الuseStateالخطاف هو ميزة أساسية في React تسمح للمكونات الوظيفية بإدارة الحالة. عندما يتعلق الأمر بالعمل مع المصفوفات فيuseStateحسنًا، هناك العديد من التقنيات وأفضل الممارسات التي يمكن أن تساعدك في التعامل مع البيانات بفعالية. كمورد للخطافات، رأيت بنفسي مدى أهمية فهم هذه المفاهيم، ليس فقط في سياق تطوير React ولكن أيضًا بالمعنى الأوسع لتوفير حلول موثوقة وفعالة.
تهيئة حالة الصفيف
للبدء في استخدام مصفوفة معuseStateهوك، تحتاج أولا إلى تهيئته. الuseStateيأخذ الخطاف قيمة أولية كوسيطة، والتي يمكن أن تكون مصفوفة فارغة أو مصفوفة تحتوي على بعض البيانات الأولية.
استيراد React، { useState } من 'react'؛ const ArrayExample = () => { // تهيئة حالة مصفوفة فارغة const [items, setItems] = useState([]); return ( <div> {/* المكون الخاص بك JSX */ </div> ); }; تصدير ArrayExample الافتراضي؛
في هذا المثال، قمنا بإنشاء متغير الحالةأغراضووظيفة الضبط المقابلة لهاsetItems. القيمة الأولية لأغراضهي مصفوفة فارغة.
إضافة عناصر إلى مصفوفة
إحدى العمليات الشائعة هي إضافة عناصر إلى مصفوفة موجودة. عند استخدامuseStateهوك، من المهم أن تتذكر أنه لا ينبغي عليك تغيير الحالة مباشرة. بدلاً من ذلك، تحتاج إلى إنشاء مصفوفة جديدة بالقيم المحدثة.
استيراد React، { useState } من 'react'؛ const ArrayExample = () => { const [items, setItems] = useState([]); const addItem = () => { // إنشاء مصفوفة جديدة بالعناصر الموجودة وعنصر جديد const newItems = [...items, 'New Item']; setItems(newItems); }; return ( <div> <button onClick={addItem}>إضافة عنصر</button> <ul> {items.map((item, Index) => ( <li key={index}>{item}</li> ))} </ul> </div> ); }; تصدير ArrayExample الافتراضي؛
فيaddItemالدالة، نستخدم عامل الانتشار (...) لإنشاء مصفوفة جديدة تتضمن كافة العناصر الموجودة من ملفأغراضالدولة وعنصر جديد. ثم نتصلsetItemsمع المصفوفة الجديدة لتحديث الحالة.
إزالة العناصر من مصفوفة
تتطلب إزالة العناصر من المصفوفة أيضًا إنشاء مصفوفة جديدة بدون العنصر الذي تريد إزالته. إحدى الطرق للقيام بذلك هي باستخدامفلترطريقة.


استيراد React، { useState } من 'react'؛ const ArrayExample = () => { const [items, setItems] = useState(['Item 1', 'Item 2', 'Item 3']); const RemoveItem = (indexToRemove) => { // إنشاء مصفوفة جديدة بدون العنصر الموجود في الفهرس المحدد const newItems = items.filter((_, Index) => Index!== IndexToRemove); setItems(newItems); }; return ( <div> <ul> {items.map((item, Index) => ( <li key={index}> {item} <button onClick={() => RemoveItem(index)}>إزالة</button> </li> ))} </ul> </div> ); }; تصدير ArrayExample الافتراضي؛
فيRemoveItemالدالة، نستخدمفلترطريقة لإنشاء مصفوفة جديدة تتضمن كافة العناصر باستثناء العنصر الموجود في الفهرس المحدد. ثم نتصلsetItemsمع المصفوفة الجديدة لتحديث الحالة.
تحديث العناصر في المصفوفة
تحديث عنصر في مصفوفة يشبه إضافة أو إزالة العناصر. تحتاج إلى إنشاء مصفوفة جديدة بالقيمة المحدثة.
استيراد React، { useState } من 'react'؛ const ArrayExample = () => { const [items, setItems] = useState(['Item 1', 'Item 2', 'Item 3']); const updateItem = (indexToUpdate) => { // أنشئ مصفوفة جديدة بالعنصر المحدث const newItems = [...items]; newItems[indexToUpdate] = 'العنصر المحدث'; setItems(newItems); }; return ( <div> <ul> {items.map((item, Index) => ( <li key={index}> {item} <button onClick={() => updateItem(index)}>تحديث</button> </li> ))} </ul> </div> ); }; تصدير ArrayExample الافتراضي؛
فيupdateItemالدالة، نقوم أولاً بإنشاء مصفوفة جديدة بنفس قيم الدالةأغراضالدولة باستخدام عامل الانتشار. ثم نقوم بتحديث العنصر في الفهرس المحدد ونتصل بهsetItemsمع المصفوفة الجديدة لتحديث الحالة.
العمل مع المصفوفات المتداخلة
عند العمل مع المصفوفات المتداخلة، تنطبق نفس المبادئ. تحتاج إلى إنشاء صفائف جديدة في كل مستوى من مستويات التداخل لتجنب تحور الحالة مباشرةً.
استيراد React، { useState } من 'react'؛ const NestedArrayExample = () => { const [nestedArray, setNestedArray] = useState([ ['Subitem 1', 'Subitem 2'], ['Subitem 3', 'Subitem 4'] ]); const updateNestedItem = (outerIndex, InternalIndex) => { // أنشئ مصفوفة متداخلة جديدة بالعنصر الفرعي المحدث const newNestedArray = [...nestedArray]; const newInnerArray = [...newNestedArray[outerIndex]]; newInnerArray[innerIndex] = 'العنصر الفرعي المحدث'; newNestedArray[outerIndex] = newInnerArray; setNestedArray(newNestedArray); }; return ( <div> <ul> {nestedArray.map((innerArray, ExternalIndex) => ( <li key={outerIndex}> <ul> {innerArray.map((subitem, insideIndex) => ( <li key={innerIndex}> {subitem} <button onClick={() => updateNestedItem(outerIndex, insideIndex)}>تحديث</button> </li> ))} </ul> </li> ))} </ul> </div> ); }; تصدير NestedArrayExample الافتراضي؛
فيupdateNestedItemدالة، نقوم بإنشاء صفائف جديدة في كل مستوى من مستويات التداخل لتحديث العنصر الفرعي. ثم نتصلsetNestedArrayمع المصفوفة المتداخلة الجديدة لتحديث الحالة.
حالات الاستخدام في التطبيقات الحقيقية والعالمية
فهم كيفية استخدامuseStateيعد الارتباط بالمصفوفات أمرًا بالغ الأهمية في العديد من تطبيقات العالم الحقيقي. على سبيل المثال، في تطبيق قائمة المهام، يمكنك استخدام مصفوفة لتخزين قائمة المهام. يمكنك إضافة مهام جديدة، ووضع علامة عليها كمكتملة (وهو ما يمكن اعتباره تحديثًا)، أو إزالتها من القائمة.
حالة استخدام أخرى موجودة في تطبيق عربة التسوق. يمكن تمثيل عربة التسوق كمجموعة من العناصر. يمكنك إضافة عناصر جديدة إلى سلة التسوق، أو إزالة العناصر، أو تحديث كمية أحد العناصر في سلة التسوق.
خاتمة
باستخدامuseStateيتطلب ربط المصفوفات دراسة متأنية لتجنب تحور الحالة مباشرة. من خلال إنشاء مصفوفات جديدة بالقيم المحدثة، يمكنك التأكد من إعادة عرض مكونات React بشكل صحيح والحفاظ على حالة يمكن التنبؤ بها.
باعتبارنا موردًا للخطافات، فإننا ندرك أهمية تقديم حلول عالية الجودة. سواء كنت تبحث عنخطافات الحمام الذهبيةأوخطافات المناشف لإكسسوارات الحمام، لدينا مجموعة واسعة من المنتجات لتلبية احتياجاتك. إذا كنت مهتمًا بمنتجاتنا أو كانت لديك أية أسئلة، فلا تتردد في الاتصال بنا لإجراء مناقشة بشأن الشراء.
مراجع
- رد الفعل على الوثائق الرسمية على الخطاف useState
- JavaScript MDN Web Docs على طرق المصفوفة (المرشح، الخريطة، عامل الانتشار)
