Как получить код ошибки сбоя изображения React Native - PullRequest
0 голосов
/ 25 марта 2020

Если загрузка изображения не удалась, вызывается метод onError. Однако это не говорит нам причину, почему это не удалось. Есть ли способ узнать, почему RN не может загрузить изображение? Было ли это из-за 404 или 500 или пользователь не был подключен к inte rnet? et c

import React, { Component } from 'react';
import { View, Image } from 'react-native';

export default class DisplayAnImage extends Component {
  render() {
    return (
      <View>

        <Image
          style={{width: 50, height: 50}}
          onError={({ nativeEvent: {error} }) => {
              console.log(error) // < ---- How to get error code? 
          }

          source={{uri: 'https://reactnative.dev/img/tiny_logo.png'}}
        />

      </View>
    );
  }
}

1 Ответ

0 голосов
/ 25 марта 2020

Простое решение (но это плохо):

Вы можете получить сообщение об ошибке и проверить, содержит ли строка код состояния, например:

const errorMessage = "Failed to load resource https://reactnative.dev/img/random_image.png (404)"
errorMessage.includes("404")

Другое решение

Использование Fetch.

fetch("https://reactnative.dev/img/random_image.png")
  .then((res) => {  
    // the request status in in res.status
    // res.status = 404 -> error
    // res.status = 200 -> success
  })
  .catch((e) => {})

Fetch обещает отклонить только с TypeError, когда происходит ошибка сети.

Я нашел несколько полезных ссылок если вам нужно:

URL-адрес контрольного изображения React-Native

Выборка: отклонить обещание и отловить ошибку, если состояние не в порядке?

...