【问题标题】:How do I return the actual data from an Axios async call? [duplicate]如何从 Axios 异步调用返回实际数据? [复制]
【发布时间】:2021-05-05 11:47:03
【问题描述】:

我在react-redux 支持的应用程序中有以下代码。代码分为几个文件,但为了简单起见,我只是将其组合在下面:

const token = localStorage.getItem('token');

const authClient = axios.create({
    baseURL: "http://api.empaygo.local",
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
    }
});

const getUser = async (userId) => {
    const result = await authClient.get(`/users/${userId}`);
    return result;
}


const user = users.getUser(1);
console.log(user);

最终的控制台日志总是:

而且我不知道如何从中获取我需要的数据。任何帮助都会很棒:)

【问题讨论】:

  • @Quentin 这确实有帮助,谢谢。我知道我可能应该使用回调,但我需要在我得到响应之前停止我的组件渲染(或显示它正在加载)。我本可以花太长时间来解决这个问题,但你能帮忙吗?
  • 你不能那样做。让异步函数在将触发重新渲染的状态中存储一个值。

标签: reactjs async-await axios


【解决方案1】:

试试这个:

const user = users.getUser(1);
// inside this cb you will get actual object
user.then((data) => console.log(data))

或者只是

 users.getUser(1).then((data) => {
   // you can set this data into state or return another Promise
   console.log(data)
 })

你必须使用Promise

【讨论】:

  • 但我试图将响应数据分配给一个变量以在整个组件中使用,而不仅仅是控制台记录它
  • 内部回调函数,你可以为所欲为。如果需要,分配给变量或保存状态.....
猜你喜欢
  • 2016-01-14
  • 2015-06-18
  • 2020-07-09
相关资源
最近更新 更多