محمود سعداوي2 نشر 18 يناير 2023 أرسل تقرير نشر 18 يناير 2023 السلام عليكم. الكود التالي يعمل بصفة جيدة const handlePrevClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft - width console.log(box.clientWidth); } const handleNextClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft + width console.log(box.clientWidth); } بينما لو حذفت console.log(box.clientWidth); تظهر لي رسالة خطأ في عدم التعرف على "clientWidth" Uncaught TypeError: Cannot read properties of undefined (reading 'clientWidth') at handleNextClick (Slider.jsx:30:1) كيف يمكنني معالجة الخطأ. شكرا. 1 اقتباس
0 عمر قره محمد نشر 18 يناير 2023 أرسل تقرير نشر 18 يناير 2023 عدل الكود للشكل التالي : const handlePrevClick = () => { const box = carrouselRef.current; let width = box.clientWidth; box.scrollLeft = box.scrollLeft - width; }; const handleNextClick = () => { const box = carrouselRef.current; let width = box.clientWidth; box.scrollLeft = box.scrollLeft + width; }; بحيث تعرف الـ box داخل كل وظيفة بدلاً م ان تعرفه خارج الوظائف. وسبب المشكلة انك تعرف الـ box والذي هو عبارة عن useRef قبل ان تقوم بإسناد الـ useRef للعنصر الذي تريد التحكم به وفي هذه الحالة تكون قيمته undefined وهو يعمل عند اضافة الـ console.log بسبب خواص react والتي تسمح للتطبيع بالتحديث بدون اعادة تحميل الصفحة بالكامل. بينما في الشكل الثاني تقوم بتعرفي الـ box بعد ان تم اسناد الـ useRef. 1 اقتباس
0 عمر قره محمد نشر 18 يناير 2023 أرسل تقرير نشر 18 يناير 2023 يبدو ان هنالك عنصر ما ناقص في مشكلتك، جرب الكود التالي : const handlePrevClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft - width // console.log(box.clientWidth); } const handleNextClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft + width //console.log(box.clientWidth); } في حال لم يعم قم بمشاركة ملفات المشروع حتى استطيع تجريبه. اقتباس
0 محمود سعداوي2 نشر 18 يناير 2023 الكاتب أرسل تقرير نشر 18 يناير 2023 بتاريخ 1 دقيقة مضت قال عمر قره محمد: يبدو ان هنالك عنصر ما ناقص في مشكلتك، جرب الكود التالي : const handlePrevClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft - width // console.log(box.clientWidth); } const handleNextClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft + width //console.log(box.clientWidth); } في حال لم يعم قم بمشاركة ملفات المشروع حتى استطيع تجريبه. تفضل src.zip 1 اقتباس
السؤال
محمود سعداوي2
السلام عليكم.
الكود التالي يعمل بصفة جيدة
const handlePrevClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft - width console.log(box.clientWidth); } const handleNextClick = () => { let width = box.clientWidth box.scrollLeft = box.scrollLeft + width console.log(box.clientWidth); }
بينما لو حذفت
console.log(box.clientWidth);
تظهر لي رسالة خطأ في عدم التعرف على "clientWidth"
Uncaught TypeError: Cannot read properties of undefined (reading 'clientWidth')
at handleNextClick (Slider.jsx:30:1)
كيف يمكنني معالجة الخطأ.
شكرا.
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.