首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用axios的API请求的结果返回未定义的本机代码,但在控制台中正确记录

使用axios的API请求的结果返回未定义的本机代码,但在控制台中正确记录
EN

Stack Overflow用户
提问于 2020-05-10 18:50:51
回答 1查看 1.3K关注 0票数 0

下面的代码在控制台中打印响应,但是当使用useState的useState方法将其更新到结果时,它不起作用。在我的JSX代码中,它没有输出任何替代result.length的内容。

代码语言:javascript
运行
复制
import React, { useState } from 'react';
import {Text, View, StyleSheet,Button } from 'react-native'
import axios from 'axios'
const WeatherAPI = () => {
const [ results, setResults] = useState([]);

const getAPIresults = async () => {
    await axios.get("https://newsapi.org/v2/top-headlines?country=us&apiKey=<mykeyhere>")
        .then((response)=>{
            console.log(response);
            setResults(response);
          })
          .catch((error)=>{
            console.log(error)
          })    
}
return(
<View>
<Text> We got {results.length} items</Text>
<Button title="GetAPI" onPress = {() => {getAPIresults()}} />
</View>
)
}

我将空数组初始化为结果,但响应将是一个对象。因此,我尝试分配一个数组而不是一个对象。React并不重要,但我尝试更新响应对象中存在的数组。

响应json对象有项目数组。

代码语言:javascript
运行
复制
const getAPIresults = async () => {
    await axios.get("https://newsapi.org/v2/top-headlines?country=us&apiKey=<mykeyhere>")
        .then((response)=>{
            console.log(response.articles);
            setResults(response.articles);
          })
          .catch((error)=>{
            console.log(error)
          })    
}

但是它会抛出一个错误,说明结果是未定义的。甚至控制台现在也抛出未定义的附错。有人能帮助解决这个问题吗?提前谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2020-05-10 19:05:27

当axios接收到响应时,数据包含在响应的数据字段中,您应该将数据设置如下。

代码语言:javascript
运行
复制
 setResults(response.data.articles);
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61717150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档