我正在努力寻找一种方法来提供回调函数以正确使用iTunes Store 搜索 API。
我正在尝试实现这种行为:
const getiTunes = fetch(`https://itunes.apple.com/search?term=${search}&media=movie&limit=200`)
.then(results => results.json())
.then(results => {
if (results.errorMessage) throw Error(results.errorMessage)
else setResults(results)
})
.catch(error => {
//handle error
})
到目前为止,我有这个:
const getiTunes = results => {
if (results.errorMessage) throw Error(results.errorMessage)
else setITunes(results)
}
const script = document.createElement("script")
script.src = `https://itunes.apple.com/search?term=${search}&media=movie&limit=200&callback=getiTunes`
script.async = true
document.body.appendChild(script)
我不断收到以下错误:
Uncaught ReferenceError: getiTunes is not defined
我也尝试过&callback="getiTunes"
,&callback=${getiTunes}
但他们也失败了。
useEffect
这些函数在 React的钩子中被调用。有没有一种特定的方法我必须检索函数名称?
在旁边
如果我尝试不提供回调函数,它只会在搜索是新搜索时起作用(即我之前没有搜索过该术语)。但是,如果我有(比如在生产 URL 上或本地),那么它将出现以下错误:
Access to fetch at 'https://itunes.apple.com/search?term=spiderman&media=movie&limit=200' from origin 'http://localhost:3000' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value "--it has the last URL I used to search for this successfully--"...