首页 > 解决方案 > 试图获取 api 但做出反应会出错

问题描述

我正在尝试获取 api 的数据,但一直存在问题。一旦获取过程结束,我有一个函数可以将数据设置为新数据,并且我试图将其作为回调调用。这是代码:

我获取数据的函数:

async function getAPI(url, settings, callback) {
    const response = await fetch(url, settings)
    var result = await response.json()
    callback(result)
}

我在哪里使用它:

const callback = (newVal) => {
    // Return if newVal === ""
    if (newVal === "") {
        return
    }
    // Delete the previous data & set the new searchVal
    setData(null)
    setSearchVal(newVal)

    // Get API
    const url = `https://movies-tvshows-data-imdb.p.rapidapi.com/?type=get-movies-by-title&title=${newVal}`
    const settings = {
        "method": "GET",
        "headers": {
            "x-rapidapi-key": "xyz",
            "x-rapidapi-host": "movies-tvshows-data-imdb.p.rapidapi.com"
        }
    }

    getAPI(url, settings, setData)
}

我在哪里调用回调(顺便说一下,回调被正确调用,因为我已经完成了该部分的调试):

return (
    <div id="movie-page">
        <MovieBar callback={(val)=>{callback(val)}} />
    </div>
)

如果您认为这里没有错误,并且代码中可能还有其他原因导致它,请评论它,以便我更新问题。提前致谢 :)

更新 1:

我还想添加我的初始声明,它们是:

const [searchVal, setSearchVal] = useState(null)
const [searchOn, setSearchOn] = useState(false)
const [scene, setScene] = useState(null)
const [data, setData] = useState(null)

顺便说一句,我还没有开始研究其中的一些。所以记住这一点。

标签: javascriptreactjsfetch-api

解决方案


我不知道我怎么错过了这个,我只是忘记了导出功能。

这是我导出函数的初始代码:

async function getAPI(url, settings, callback) {
    const response = await fetch(url, settings)
    var result = await response.json()
    callback(result)
}

我只是export在开头添加了,就是这样。


推荐阅读