gpt4 book ai didi

javascript - ReactJS:Axios 的异步请求返回 'undefined'

转载 作者:行者123 更新时间:2023-12-04 10:29:20 25 4
gpt4 key购买 nike

我正在做一个使用电影 DB API 的小项目是 ReactJs,我在使用异步函数时遇到问题,我正在项目的许多部分进行 api 调用并在所有这些部分中工作,但现在它不起作用。

我的 axios 配置:

export default axios.create({
baseURL: 'https://api.themoviedb.org/3/',
params: {
api_key: process.env.REACT_APP_API,
},
});

在我的容器中,我有这个
const { setMenuSelected } = useContext(MovieContext);
const [movie, setMovie] = useState({})
const [recommendations, setRecommendations] = useState([]);
const [isLoading, setIsLoading] = useState(true)

useEffect(() => {
animateScroll.scrollToTop({ smooth: true });
setMenuSelected('');
getMovieRecommendations(setRecommendations, match.params.id, setIsLoading);
setMovie(getMovieDetails(match.params.id, setMovie));
}, [match.params.id, recommendations, isLoading]);

我正在获取其他文件中的数据只是为了组织项目
export const getMovieRecommendations = async (
setRecommendations,
movieId,
setIsLoading) => {
const res = await api.get(`/movie/${movieId}/recommendations`);
setRecommendations(res.results);
setIsLoading(false);
}

为了渲染电影列表,我将推荐传递给我的组件,该组件仅使用 map 来渲染每部电影,
<MovieList header={'Recommentadion'} movieList={recommendations} />

但是应用程序总是崩溃,说“无法读取未定义的属性‘ map ’”,我查看了 chrome 中的网络属性,我的请求正在完成,没有错误。

更新:

返回 console.log(JSON.stringify(res))我删除了结果 itens 所以它不会变得太大
{
"data":{
"page":1,
"results":[
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{}
],
"total_pages":2,
"total_results":40
},
"status":200,
"statusText":"",
"headers":{
"cache-control":"public, max-age=14400",
"content-type":"application/json;charset=utf-8",
"etag":"W/\"56ca661f28e43dc3dd2ce41816b517c5\""
},
"config":{
"transformRequest":{

},
"transformResponse":{

},
"timeout":0,
"xsrfCookieName":"XSRF-TOKEN",
"xsrfHeaderName":"X-XSRF-TOKEN",
"maxContentLength":-1,
"headers":{
"Accept":"application/json, text/plain, */*"
},
"method":"get",
"baseURL":"https://api.themoviedb.org/3/",
"params":{
"api_key":"fe5b485ed12153ca357c3275cfad6c5c"
},
"url":"https://api.themoviedb.org/3/movie/399121/recommendations"
},
"request":{

}
}

最佳答案

尝试做:

const res = await api.get(`/movie/${movieId}/recommendations`);
console.log(JSON.stringify(res));

这会将整个 JSON 对象打印到控制台中的字符串中。由于您得到 undefined 并且没有错误,您很可能错误地访问了 JSON 对象。通过打印内容,这将显示您的 JSON 对象的外观,以便您可以成功访问“结果”属性。

关于javascript - ReactJS:Axios 的异步请求返回 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60477514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com