Как получить изображение в React Native из API?

Я делаю приложение с React Native, в котором я показываю автомобили F1 в качестве школьного проекта, и я получаю свои данные (названия, изображения и т. д.) из сообщений на моем веб-сайте Wordpress. Я делаю это с помощью выборки. (Примечание: я новичок в этом, поэтому извините, если моя формулировка немного сложна.)

Я использую почтальон для поиска своих данных, и я нашел свое изображение, которое хочу использовать:

"og_image": [
            {
                "width": 1920,
                "height": 1080,
                "url": "https://tibomertens.be/wp-content/uploads/2022/12/F1-75_JPG_SPONSOR_00004.jpg",
                "type": "image/jpeg"
            }
        ],

Итак, в моем коде React Native я написал это, чтобы получить URL-адрес изображения:

{item.id === 572 && (
                <Image
                  style = {{ width: 50, height: 200 }}
                  source = {{ uri: `${item.og_image[0].url}` }}
                />
              )}

Но выдает ошибку "[TypeError: undefined не является объектом (оценка 'item.og_image[2]')]".

полный код:

const Cars = ({ navigation }) => {
  const [Cars, setCars] = useState([]);

  const getCars = async () => {
    try {
      const response = await fetch(
        "https://tibomertens.be/wp-json/wp/v2/posts?categories=8",
        {}
      );
      const json = await response.json();
      setCars(json);
      console.info(Cars);
      console.info("hey");
    } catch (error) {
      console.error(error);
    }
  };

  useEffect(() => {
    getCars();
  }, []);

  return (
    <View>
      <FlatList
        data = {Cars}
        renderItem = {({ item }) => (
          <View>
            <Text>
              {"\n"}
              {item.id === 572 && (
                <Image
                  style = {{ width: 50, height: 200 }}
                  source = {{ uri: `${item.og_image[0].url}` }}
                />
              )}
              <Text>
                {item.title.rendered} {"\n"}{" "}
              </Text>
              <Text>{item.rttpg_excerpt}</Text>
            </Text>
            <Pressable
              onPress = {() =>
                navigation.navigate("Details", {
                  itemTile: item.title.rendered,
                })
              }
            >
              <Text>bekijk product</Text>
            </Pressable>
          </View>
        )}
      ></FlatList>
    </View>
  );
};

Спасибо за чтение и, надеюсь, кто-то может мне помочь!

Вы уверены, что это правильный способ доступа к URL-адресу изображения? Судя по тому, что вы написали, это будет item.og_image[0].url

Abe 29.12.2022 19:24

Абэ, это дает [TypeError: undefined не является объектом (оценка 'item.og_image[0]'), когда я пытаюсь это сделать.

Tibo Mertens 29.12.2022 19:38

Попробуйте выйти из item из обратного вызова renderItem и посмотрите, что вы на самом деле получаете.

Abe 29.12.2022 20:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
3
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

обновленный ответ. Измените этот код:

{item.id === 572 && (
    <Image
       style = {{ width: 50, height: 200 }}
       source = {{ uri: `${item.og_image[0].url}` }}
         />
   )}

к:

{item.yoast_head_json?.og_image !== undefined && <Image
  style = {{ width: 50, height: 200 }}
  source = {{ uri: `${item.yoast_head_json.og_image[0].url}` }}
/>
}

Эй, Разиэль, это дает ошибку «[TypeError: undefined не является объектом (оценка« item.og_image [0] »)». Есть идеи, почему?

Tibo Mertens 29.12.2022 19:36

это потому, что og_image существует только с идентификатором 572. Проверьте обновленный ответ

Raziel 29.12.2022 19:45

К сожалению, это дает мне ту же ошибку:/

Tibo Mertens 29.12.2022 20:06

можете ли вы опубликовать обновленный код в исходном вопросе

Raziel 29.12.2022 20:07

Я обновил свой исходный вопрос

Tibo Mertens 29.12.2022 20:15

попробуйте обновленный ответ

Raziel 29.12.2022 20:38

Другие вопросы по теме