Я пытаюсь найти способ предоставить функцию обратного вызова для правильного использования API поиска в iTunes Store .
Я пытаюсь добиться этого поведения:
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. Есть ли конкретный c способ получения имени функции?
В стороне
И если я пытаюсь не предоставлять функцию обратного вызова, она будет работать, только если поиск является новым поиском (ie Я не искал этот термин раньше). Однако, если у меня есть (скажем, на производственном 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--"...