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

السؤال

نشر

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

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...