无法获取api数据并使用vuex存储-vue.js

时间:2019-06-09 11:16:52

标签: javascript vue.js vuejs2 vuex

我对使用vuex获取api有问题。而且我的端点没有问题。我可以看到json数据。但是,当我尝试获取它时,我无法存储数据并在下面显示控制台错误。

  

已挂接的钩子中出现错误:“ TypeError:   _api_article_js__WEBPACK_IMPORTED_MODULE_0 __。default.getArticles不是函数”

关于我的进出口:

App.js

window._ = require('lodash');

try {
    window.$ = window.jQuery = require('jquery');

    require('foundation-sites');
} catch (e) {}

window.axios = require('axios');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

let token = document.head.querySelector('meta[name="csrf-token"]');

if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}

import Vue from 'vue';
import router from './routes.js';
import store from './store.js';

new Vue({
     router,
     store,
}).$mount('#app')

config.js

var api_url = 'mywebsite.com/api';

export const ESTATE_CONFIG = {
    API_URL: api_url,
}

api / article.js

import { ESTATE_CONFIG } from '../config.js';

export default {
    getarticles: function(){
        return axios.get( ESTATE_CONFIG.API_URL + '/articles' );
    },
}

Store.js

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

import { articles } from './modules/articles.js'

export default new Vuex.Store({
    modules: {
        articles,
    }
});

modules / articles.js

import ArticleAPI from '../api/article.js';

export const articles = {
    state: {
        articles: [],
        articlesLoadStatus: 0,

        article: {},
        articleLoadStatus: 0
    },
    getters: {
        getArticlesLoadStatus( state ){
            return state.articlesLoadStatus;
        },
        getArticles( state ){
            return state.articles;
        },
    },
    mutations: {
        setArticlesLoadStatus( state, status ){
            state.articlesLoadStatus = status;
        },
        setArticles( state, articles ){
            state.articles = articles;
        },
    },
    actions: {
        loadArticles( { commit } ){
            commit( 'setArticlesLoadStatus', 1 );

            ArticleAPI.getArticles()
                .then( function( response ){
                  commit( 'setArticles', response.data );
                  commit( 'setArticlesLoadStatus', 2 );
                })
                .catch( function(){
                  commit( 'setArticles', [] );
                  commit( 'setArticlesLoadStatus', 3 );
                });
        },
    },
}

我需要有关此的帮助。因为我不确定我在做什么错。当然,端点也没有问题。我可以看到json数据。但是我的vuex商店是空的。我上面有一个错误。

1 个答案:

答案 0 :(得分:2)

该错误表明 api / article.js 中不存在名为getArticles的导出函数。

看一下该模块,它看起来像一个大写问题。该函数不大写,因此在调用时,请使用:

ArticleAPI.getarticles