اذهب إلى المحتوى
  • 0

أريد شرح لإستعمال separated operator هنا

Mohamed Lamin Mahmoudi

السؤال

Recommended Posts

  • 0

يتم إضافة كائن Object جديد إلى المصفوفة tasks من خلال استخدام معامل النشر أو (Spread Operator) وهو مفهوم بالجافاسكريبت يعمل على نشر عناصر مصفوفة ما، أي بمعنى آخر يتم إعادة وضع جميع عناصر المصفوفة tasks كما هي وباستخدام الفاصلة والقيمة الجديدة يتم إضافة هذه القيمة إلى القيم السابقة. مثال:

let numbers = [1,2,3];
let newNumbers = [...numbers,4];

newNumbers = [1,2,3,4] ستكون قيمة المصفوفة الجديدة تساوي قيمة المصفوفة السابقة ويضاف لها الرقم الجديد

وبنفس الطريقة يتم دمج عناصر من عدّة مصفوفات بمفصفوفة واحدة، مثال:

var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];

arr1 = [...arr1, ...arr2];

الناتج: [0,1,2,3,4,5]

يمكنك إيجاد بعض الأمثلة المفيدة ضمن موسوعة حسوب (من هنا)

أما بالنسبة لآلية عمل useState فهو يعرف بالخطّاف وهو من أساسيات مكتبة React وآلية عمله بشكل مختصر هو تحديث بعض القيم تبعاً لمتغيرات، بحيث يتم إضافة قيمة مبدئية للمتغيّر الذي نرغب بتحديثه (وهنا في مثالنا وضعنا مصفوفة فارغة) ثم يتم تحديثها باستخدام setTasks.

ويمكنك قراءة المزيد عنها من خلال التوثيق الرسمي والبحث على الانترنت ستجد العديد من الأمثلة الشاملة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

نقوم باستخدام ال spread operator في ال useState حتى نقوم بتحديث القيم الموجودة في ال state وكما تم التوضيح في التعليق السابق بشكل جيد سأحاول توضيح أهميته من خلال المثال التالي

إذا كان لديك مصفوفة من الكائنات أو الكائنات ذات الحقول والقيم ، وتريد إضافة المزيد من الحقول أو العناصر بحيث يمكنك القيام بذلك باستخدام التعليمات التالية. لنأخذ مثالاً ، لنفترض أن لدينا الحالة التالية بالأشياء

const [values, setValues] = useState({
  full_name: "",
  email: "",
  password: "",
  confirmPassword: "",
  type: ""
});

ونريد فقط تحديث قيمة البريد الإلكتروني ، يمكننا القيام بذلك باستخدام spread operator:

setValues({ ...values, email: 'new Value' })

لنفترض أنك تريد إضافة حقل أو كائن جديد في المصفوفة أو الحالة ، لتحقيق ذلك سنتبع الطريقة التالية

setValues({ ...values, nickName: 'new Value' })

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...