【问题标题】:axios.post().then() not passing resolved data to callback functionaxios.post().then() 没有将解析的数据传递给回调函数
【发布时间】:2019-10-16 23:52:40
【问题描述】:

当我使用axios.post(...).then(data=>callback(data)) 时,我在回调中访问数据时未定义数据,但是,访问数据之前的控制台日志会显示所有数据。

我已经尝试了所有可能的异步等待组合。我觉得这是一个比我做的简单得多的问题。

// passed in as successCallback
const handleCreationCompleted = data => {
    console.log(data)

    // Error below ReturnedDataObject not defined
    var object = data.ReturnedDataObject

}

const createObject = async (variables, successCallback, errorCallback) => {
    ...
    await axios.post(url, form_data, {
        headers: {
    ...
        },
    }).then(res => {
        successCallback(res)
    })
    .catch((err) => {
        errorCallback(err)
    })

我应该能够访问成功回调中的数据,它是一个 json 对象(它是从 graphql api 中获取的)

【问题讨论】:

  • 你能告诉我们你从console.log得到什么吗?
  • @MattAft 这个建议让我意识到我必须访问 data.data.data 链、promise 的链接方式以及 graphql 如何返回数据。谢谢。

标签: javascript reactjs axios


【解决方案1】:

您正在使用 awaitthen()。你应该换一个。如果使用 await,则将结果分配给变量。您还应该传回响应的数据,而不是响应本身。

const response = await axios.post(...)
callback(response.data)

如果你想使用then,那么它是:

axios.post(...)
.then(respone => callback(response.data))

【讨论】:

  • 这是我尝试的第一件事。如果您在该回调中console.log(data),则返回数据。但是,如果您尝试访问它,则会出现错误。 IE。这与我上面的代码完全相同。
  • 到底是什么错误?只是变量未定义?
  • TypeError: Cannot read property 'ReturnedDataObject' of undefined
  • 你应该回传res.data,而不是res。更新了答案。
  • 这解决了它,从 apollo 请求转移到 axios 请求需要这个改变。
猜你喜欢
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 2015-08-29
  • 2014-07-13
  • 1970-01-01
相关资源
最近更新 更多