【问题标题】:api request returns undefinedapi 请求返回未定义
【发布时间】: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);
        });
    }

为什么会发生这种情况,我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: rest vue.js axios


    【解决方案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,哇,我真的想多了。我用一个更简单的解决方案编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2021-09-29
    • 2020-10-26
    相关资源
    最近更新 更多