我正在尝试使用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) ...}


我想进入项目,但是当我这样做时

console.log(dataSource.items);


要么

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


我懂了

Cannot read property 'items' of undefined


任何的想法?
我的错误在哪里?

最佳答案

dataSource状态默认为undefined,您需要更改默认值以具有items属性。 fetch正在异步处理then,因此数据将在几毫秒后到达,并且在这段时间内,代码尝试访问缺少的items属性。

您可以尝试进行不同的初始化,如下所示:

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


我希望这有帮助!

关于javascript - 移入Spotify阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60831677/

10-11 12:01