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

السؤال

نشر

انا استخدم مكتبة React و لدية ملف json  به معلومات الافلام مثل عنوان الفلم و سنة الاصدار و رابط صورة الفلم ,المشكلة اني استخدم رابط الصور من موقع خارجي و هذا الموقع قام بحذف بعض الصور لكن روابط هذه الصور موجودة في ملف json و لا اعرف اي الصور التي تم حذفها لان الملف كبير هل يوجد دالة او طريقة لتخطي الصور المحذوفة عند عمل تصفية filter لملف json و ارجاع المعلومات التي تحوي على صور موجودة فقط 

هذا الموقع الذي اخذ الصور منه https://developers.themoviedb.org/3/getting-started/images

Recommended Posts

  • 1
نشر

يمكن الاعتماد على الدالة onError لتضع صورة من عندك (تدل على عدم وجود صورة مثلا/خطأ تحميل) 

this.state = ({
     image:{uri: this.props.imageUrl}
})
const setimage = () => {
     	this.setState=({image:  require('../images/logo.png')  
	})
}

<Image
       source={this.state.image}
       style={styles.imageThumbnail}
       onError={()=>setimage()}
  />

عند حدوث مشكلة في تحميل الصورة، سيتم تعويضها بصورة من عك مثلا اللوغو..

  • 0
نشر (معدل)

يمكن تصفية الروابط حسب وجود الصور باختبارها مسبقًا، بفرض أن imagesUrls هي مصفوفة روابط الصور

imagesUrls = imagesUrls.filter(url => {
  var http = new XMLHttpRequest()
  http.open('HEAD', url, false)
  http.send()

  return http.status != 404)
})

تصفية جميع الروابط دفعة واحدة قد يستغرق وقتا، لذلك نقوم فقط بتصفية الروابط التي نحتاج عرضها حاليا داخل المكون نفسه 

تم التعديل في بواسطة Hassan Hedr
  • 0
نشر

يمكنك الاستعانة ب onerror و onload وأيضا ال state لأنشاء كون يرجع لصورة مختارة أو يمكنك أن لا تضع الصورة وتضع مكانها مكون هذا المثال سيعطيك فكرة عن كيف يمكنك التلاعب في حالتك لتفادي النتيجة غير المرغوبة 


export default function ImageComponent () {
const [state, setState] = useState({loading:true,error:false})
  const handleImageLoaded = ()=> {
    setState({ status: false, error: false });
  }

  const handleImageError= ()=> {
    setState({ status: false, error: true });
  }


    return (
      <div>
        <img
          src={state.error ? 'static/404.png' : fallbackImage}
          onLoad={handleImageLoaded}
          onError={handleImageError}
        />
        {state.status && "loading"}
      </div>
    );
  }


export default ImageComponent;

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...