微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 在Vue js中导入axios方法的正确语法

我试图通过导入它们而不是直接在创建的钩子中调用它来将我的axios调用与我的主vue实例分开.

我在一个名为data.js的单独文件中有这个

import axios from 'axios'
export default{
    myData() {
        return axios.get(`http://localhost:8080/data.json`)
            .then(response => {
                // JSON responses are automatically parsed.
                return response.data;
            })
            .catch(e => {
                return this.myErrors.push(e)
            });
},

在我的vue实例中,我有以下内容

import myDataApi from '@/api/data.js'

export default {
    name: 'app',
    components: {
        myDataApi, // not sure if this is correct
    },
    data: function () {
        return {
            myInfo: '',
        }
    },
    created() {
        this.myInfo = myDataApi.myData();
        console.log('this.myInfo= ', this.myInfo)
    },

我试图用myData调用的json填充myInfo.这将返回Vue devtools中的[object Promise]和控制台中的Promise {< pending>}.

我需要的所有数据都在一个名为[[PromiseValue]]的数组中的Promise {< pending>}内:对象所以我知道它正在工作,我只需要知道实现它的正确方法.

解决方法:

我目前没有启用开发环境来测试它,但我注意到您正在尝试在组件初始化时分配变量.这个对象是一个承诺,但是在您导入它的组件内部解析后,您不会处理它.

我建议尝试处理实际组件内部的承诺,例如:

import myDataApi from '@/api/data.js'

export default {
    name: 'app',
    components: {
        myDataApi, // not sure if this is correct
    },
    data: function () {
        return {
            myInfo: '',
        }
    },
    created() {
        myDataApi.myData()
          .then((data) => {
            this.myInfo = data
            console.log('this.myInfo= ', this.myInfo);
          });
          .catch((e) => handleError) // however you want to handle it

    },

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐