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

标签 javascript vue.js vuejs2 vuex

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

Error in mounted hook: "TypeError: _api_article_js__WEBPACK_IMPORTED_MODULE_0__.default.getArticles is not a function"

关于我的 import/export :

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 商店是空的。我上面有一个错误。

最佳答案

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

看一下那个模块,它看起来像是一个大小写问题。该函数没有大写,所以调用它时,使用:

ArticleAPI.getarticles

关于javascript - 无法获取 api 数据并使用 vuex 存储 - vue.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56514138/

相关文章:

javascript - 获取 json 数组中所有对象的索引

javascript - jQuery 事件回调速度 : Anonymous vs. 命名函数

javascript - 如何在 addEventListener 中移除 EventListener?

javascript - Vue.js 中的电子邮件验证

html - 如何居中用 vue 创建的分页栏?

javascript - 让 child 进入数组

javascript - 如何在 Vue 中有条件地添加一个类?

javascript - 如何在 Google Chrome 开发者工具中搜索范围变量?

javascript - 使用 Webpack 将 Vue 暴露给全局

javascript - 为什么 v-bind :class not working?