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

مشكل في حساب عدد اللايكات

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

السؤال

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

أواجه مشكل في حساب اللايكات حيث يقع تفعيل الدالة إلا من المرة الثانية

const likeImage = async (id) => {
  if (!user) {
    navigate("/login");
    return;
  }
  
  await axios
    .put(`/api/images/like/${id}`, like, {
      headers: {
        "Content-Type": "application/json",
        "x-auth-token": user.data.token,
      },
    })
    .then((res) => {
      setLike(res.data)
    })
    .catch((err) => setError(err.response.data.msg)); 
};
**************************
const unLikeImage = async(id) => {
    if (!user) {
      navigate("/login");
      return;
    };
  
    await axios
    .put(`/api/images/unlike/${id}`, like, {
      headers: {
        "Content-Type": "application/json",
        "x-auth-token": user.data.token,
      },
    })
    .then((res) => {
      setLike(res.data)
    })
    .catch((err) => setError(err.response.data.msg)); 
  };

****************************************
<div className="menu-like">
  {/* {error && <Alert error={error} />} */}
  <div className="like" onClick={() => likeImage(imageId)}>
    <i className="fa-regular fa-thumbs-up"></i>
    {likes.length === 0 ? "" : likes.length}
  </div>
  <div className="dislike" onClick={() => unLikeImage(imageId)}>
    <i className="fa-regular fa-thumbs-down"></i>
  </div>
</div>

أما بالنسبة لعدد الإعجابات 

{likes.length === 0 ? "" : likes.length}

فلا يظهر إلا بعد تحديث الصفحة.

شكرا لكم.

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

Recommended Posts

  • 0

أرفق مجلد المشروع لتفقد المشكلة، وتأكد من أن الدوال likeImage و unLikeImage تعمل بشكل صحيح وأنها تقوم بإرسال الطلبات بشكل صحيح من خلال إضافة console.log للتحقق من تنفيذ الدوال كالتالي:

const likeImage = async (id) => {
  if (!user) {
    navigate("/login");
    return;
  }

  try {
    const response = await axios.put(`/api/images/like/${id}`, like, {
      headers: {
        "Content-Type": "application/json",
        "x-auth-token": user.data.token,
      },
    });
    console.log("Response from likeImage:", response.data); // سيتم تسجيل الاستجابة في وحدة التحكم
    setLike(response.data);
  } catch (err) {
    setError(err.response.data.msg);
  }
};

const unLikeImage = async (id) => {
  if (!user) {
    navigate("/login");
    return;
  }

  try {
    const response = await axios.put(`/api/images/unlike/${id}`, like, {
      headers: {
        "Content-Type": "application/json",
        "x-auth-token": user.data.token,
      },
    });
    console.log("Response from unLikeImage:", response.data); // سيتم تسجيل الاستجابة في وحدة التحكم
    setLike(response.data);
  } catch (err) {
    setError(err.response.data.msg);
  }
};

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...