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

حساب عدد اللايكات باستعمال رياكت

محمود سعداوي2

السؤال

السلام عليكم.

في الصورة التالة لدي منتج به زر إعجاب يتغير لونه عند النقر عليه

4.JPG.0ba69efe74af1066b6293b797ab75e70.JPG3.JPG.f815be3291643c7afd57a0882d6cca73.JPG

مثلما تلاحظون في أعلى الصورة يوجد عنصر My Favorites

هذا العنصر يحدد عدد الإعجابات الجملية أو بالأحرى يحسب عدد الأزرار التي باللون الأحمر.

مثال: في الصورة الثانية عدد الإعجابات 01 بينما إذا أعدت النقر على الزر باللون الأحمر يتحول لونه إلى اللون الأولي و بالتالي يصبح عدد الإعجابات 00.

الكود الذي قمت به:

const handleLike = (el) =>{
    el.target.classList.toggle('toggle-like-btn-icon')
    if(el.target.style.color === "#F05454"){
        setNumLikes(numLikes + 1)
      console.log('true');
    }else{
        setNumLikes(numLikes - 1)
    }
  }

المشكل أنه مهما كان النقر دائما My Favorites  تزيد بعدد 01

شكرا على المساعدة.

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

Recommended Posts

  • 0
بتاريخ 40 دقائق مضت قال محمود سعداوي:

تفضل

src (2).zip

يبدو ان المشكلة في الشرط الخاص بك، حيث ان الـ color هنا معطى للكلاس وليس للعنصر نفسه وبالتالي فالشرط التالي :

el.target.style.color !== "#F05454"

لن يكون صحيحاً في اي وقت من الاوقات.

والمشكلة الثانية هي انك تقوم بعمل الـ toggle قبل الشرط وبالتالي فإن العنصر إذا لم يكن مفعل سيفعل ثم سيتم 

والحل هو ان تغير الوظيفة إلى الشكل التالي :

const handleLike = (el) => {
  if (el.target.className.includes("toggle-like-btn-icon")) {
    setNumLikes(numLikes - 1)
    el.target.classList.toggle('toggle-like-btn-icon')
  } else {
    setNumLikes(numLikes + 1)
    el.target.classList.toggle('toggle-like-btn-icon')
  }
}

بحيث يكون الشرط هو احتواء الـ className على الـ class المسمى toggle-like-btn-icon.

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

  • 0
بتاريخ 9 دقائق مضت قال عمر قره محمد:

هي مكنك مشاركة ملف الـ src حتى استطيع الاطلاع على المشكلة بشكل افضل.

تفضل

src (2).zip

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...