Как отобразить резервный URL-адрес, если данные JSON не определены?

const SearchResults = ({ artists }) => (
  <div className = "search-results">
    {artists.map(val => (
      <a href = "# " key = {uniqid()}>
        <h3>{val.name}</h3>
        <img
          className = "box-img"
          src = {
            val.images[0].url
              ? val.images[0].url
              : 'https://www.w3schools.com/w3css/w3css_images.asp'
          }
          alt = ""
        />
      </a>
    ))}
  </div>
);

У меня есть вызов API в Spotify для получения списка исполнителей. Когда все результаты имеют изображение, проблем нет, но если их нет, React просто возвращает undefined, и я не могу понять, как отобразить изображение заполнителя.

Это потому, что это недопустимый источник изображения. Страница ASP.NET - это не изображение ...

Andrew Li 15.06.2018 00:38

@ Li357 - не уверен насчет asp.net, но я обслуживаю файлы GIF / JPG / PNG в PHP, просто отправляя соответствующий заголовок содержимого и содержимое файла. URL заканчивается на .php ...

ivanivan 15.06.2018 00:41

@ivanivan Но здесь это ссылка w3schools на страницу ASP.NET без отдельных заголовков. Ничто другое в предоставленном коде не указывает на ошибку, описанную OP.

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

Ответы 1

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

Вы можете просто иметь голое изображение png по умолчанию для этого в своем проекте, а затем импортировать его и использовать, когда изображение не возвращается из spotify, что-то вроде:

import defaultArtistImage from './myProject/assets/images/defaultArtistImage.png';
...
const SearchResults = ({ artists }) => (
  <div className = "search-results">
    {artists.map(val => (
      <a href = "# " key = {uniqid()}>
        <h3>{val.name}</h3>
        <img
          className = "box-img"
          src = {
            val.images.length !== 0
              ? val.images[0].url
              : defaultArtistImage
          }
          alt = ""
        />
      </a>
    ))}
  </div>
);

это проще, чем получение изображения с внешнего сервера. Кроме того, выполнение val.images[0].url может выдать ошибку, если .images - это пустой массив.

Большое вам спасибо, я не знаю, почему я не подумал об этом.

Kyle Pryor 15.06.2018 03:36

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