api 请求返回未定义
Posted
技术标签:
【中文标题】api 请求返回未定义【英文标题】:api request returns undefined 【发布时间】:2018-08-09 16:09:24 【问题描述】:也许是个愚蠢的问题,但是, 当我从“外部”函数调用 api 时,它总是返回未定义, 例如:
actions.js
import axios from 'axios'
export function getProducts()
axios.get('http://localhost:8000/api/products').then((response) =>
return response;
);
然后在一个组件中:
mounted()
this.products = getProducts();
console.log(this.products);
返回未定义
当然,当我从组件发出请求时,它会返回结果
mounted()
axios.get('http://localhost:8000/api/products').then((response) =>
this.products = response;
console.log(this.products);
);
为什么会发生这种情况,我该如何解决这个问题?
谢谢
【问题讨论】:
【参考方案1】:您在axios.get
调用的then
回调中返回response
值。但是,您的 getProducts
函数不会返回任何内容。
只需返回axios.get
调用:
export function getProducts()
return axios.get('http://localhost:8000/api/products');
那么,getProducts
的结果将是axios.get()
返回的Promise
。因此,您可以在getProducts
的结果上添加一个then
回调,然后将this.products
设置为这样:
mounted()
getProducts().then(products => this.products = products);
【讨论】:
@null,哇,我真的想多了。我用一个更简单的解决方案编辑了我的答案。以上是关于api 请求返回未定义的主要内容,如果未能解决你的问题,请参考以下文章
在api请求准备好之前无法弄清楚如何跳过查询,因此它不会在带有useSWR的apollo useQuery中返回未定义的变量