import React, { useState, useEffect } from 'react';导入我的钩子
function useFetch(url, defaultResponse) {
const [data, setData] = useState(defaultResponse);
async function getDataFromAPI(url) {
try {
const res = await fetch(url);
const data = await res.json();
setData({
isLoading: false,
data
})
} catch (e) {
console.log(e);
}
}
useEffect(() => {
getDataFromAPI(url);
}, [url])
return data;
}创建了一个自定义钩子
export default function YouTubeData() {
const channelID = "UCXgGY0wkgOzynnHvSEVmE3A";
const APIKEY = "my-working-key";
const results = 4
const apiEndpoint = `https://www.googleapis.com/youtube/v3/search?key=${APIKEY}&channelId=${channelID}&part=snippet,id&order=date&&maxResults=${results}`
const userFetchResponse = useFetch(apiEndpoint, { isLoading: true, data: null });
if (!userFetchResponse.data || userFetchResponse.isLoading) {
return 'Loading...'
}当我控制台日志userFetchResponse.data.items时,我得到一个带有属性的对象数组
const {videoId} = (userFetchResponse.data.items.map(obj => "http://www.youtube.com/embed/" + obj.id.videoId));
return (
<div>
{
videoId.map((link, i) => {
var frame =
<div key={i} className='youtube'>
<iframe
title={i}
width="560"
height="315"
src={link}
frameBorder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen>
</iframe>
</div>
return frame
})
}
{this.frame}
</div>
)
}我正在尝试创建一个变量videoID来保存jsx src所需的4个URLs数组,但是我一直收到一个未定义的
错误。
发布于 2020-06-27 23:51:50
const {videoId} = (userFetchResponse.data.items.map(obj => "http://www.youtube.com/embed/" + obj.id.videoId));
右边是一个使用map的数组,左边也必须是一个数组。
const videoId = arr[0]
// or
const [videoId] = arr但不是{videoId,因为这将假设您的右手边有一个对象。
发布于 2020-06-27 23:55:15
当你做的时候
const {someVar} = something是相同的
const someVar = something.someVar在您的例子中,您只需要将数组存储到变量中,所以只需要
const videoIds = userFetchResponse.data.items.map(obj => "http://www.youtube.com/embed/" + obj.id.videoId);https://stackoverflow.com/questions/62616643
复制相似问题