Переезд в массив Spotify - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь использовать Spotify API и перейти в массивы.

const App = () => {
  const [isLoading, setIsLoading] = useState(true);
  const [dataSource, setDataSource] = useState();

  useEffect(() => {
    return fetch("https://api.spotify.com/v1/me/albums?offset=0&limit=5", {
      method: "GET",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/json",
        Authorization:
          "Bearer AUTH CODE "
      }
    })
      .then(response => response.json())
      .then(responseJson => {
        setIsLoading(false);
        // console.log(responseJson);

        // let result = Object.values(responseJson); // if I want to convert it in array
        let result = responseJson
        setDataSource(result);

      });
    }, []);


    console.log(dataSource);

и я получаю объект

{href: "https://api.spotify.com/v1/me/albums?o`enter code here`ffset=0&limit=5", items: Array(5) ...}

Я хотел бы go в предметы но когда я делаю

console.log(dataSource.items);

или

console.log(dataSource.items[1]);

, я получаю

Cannot read property 'items' of undefined

Есть идеи? Где моя ошибка?

1 Ответ

1 голос
/ 24 марта 2020

Состояние dataSource по умолчанию undefined, вам нужно изменить значение по умолчанию, чтобы иметь свойство items. fetch обрабатывает then асинхронно, поэтому данные поступят через несколько миллисекунд, и в это время код пытается получить доступ к свойству items, которое отсутствует.

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

const [dataSource, setDataSource] = useState({ items: [] });

Надеюсь, это поможет!

...