Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 获取Axios响应数据_Reactjs_Promise_Axios - Fatal编程技术网

Reactjs 获取Axios响应数据

Reactjs 获取Axios响应数据,reactjs,promise,axios,Reactjs,Promise,Axios,我一直在尝试进行api调用,并将数据作为数组接收回来,以迭代数组并填充react组件。问题是我只收到了回复的承诺,因此react不会让我使用map函数。我是新的反应和有困难的理解问题 我正在按如下方式拨打axios电话: const makeRequest = async (url) => { return await axios.get(url).then(response => response.data); } 然后尝试将数组响应保存在要迭代的变量中 let data=m

我一直在尝试进行api调用,并将数据作为数组接收回来,以迭代数组并填充react组件。问题是我只收到了回复的承诺,因此react不会让我使用map函数。我是新的反应和有困难的理解问题

我正在按如下方式拨打axios电话:

const makeRequest = async (url) => {
  return await axios.get(url).then(response => response.data);
}
然后尝试将数组响应保存在要迭代的变量中

let data=makeRequest(“someUrl”)


如果我在请求中有一个
console.log()
调用,我可以得到数组,但只要我尝试将它保存到变量中,我就只能得到承诺。任何帮助都会很好谢谢你

您需要使用状态变量来处理异步数据

在组件中,您可以从状态变量迭代数组,因此,一旦数据准备就绪,您可以更新状态变量,组件将自动重新渲染

import React,{useffect,useState}来自“React”;
从“axios”导入axios;
函数DisplayData(){
//将数据状态变量初始化为空数组
const[data,setData]=useState([]);
//在组件第一次装载时进行提取
useffect(()=>{
get(url).then(response=>setData(response.data));
}, []);
返回(
{data.map((行)=>(

{row.content}

))} ); }
请参考以下示例,这可能有用:

//api.js
从“axios”导入axios;
导出默认的axios.create({
baseURL:`xyz`
});
//个人主义者
从“React”导入React;
从“axios”导入axios;
导出默认类PersonList扩展React.Component{
状态={
id:“”,
}
handleChange=事件=>{
this.setState({id:event.target.value});
}
handleSubmit=异步事件=>{
event.preventDefault();
const response=await API.get(`xyz`);
控制台日志(响应);
console.log(response.data);
}
render(){
返回(
个人识别码:
删除
)
}
}


非常感谢!这解决了我的问题,没有不断的重新渲染,真的很感激it@BrandonGullion在react的最新版本中,从useEffect返回承诺将抛出一个错误,我已经更新了我的答案以反映这一点