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

تخطي الصور الغير متاحة في JSON عند عمل filter

حسن الشافعي2

السؤال

انا استخدم مكتبة 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...