не может получить данные API и сохранить их с помощью vuex - vue.js - PullRequest
1 голос
/ 09 июня 2019

У меня проблема с api fetch с vuex. И нет проблем с моей конечной точкой. Я могу видеть данные JSON. Но когда я пытаюсь получить его, я не могу сохранить данные и отобразить ошибку консоли ниже.

Ошибка в смонтированном хуке: "Ошибка типа: _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,
}

апи / 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,
    }
});

модули / 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 Ответ

2 голосов
/ 09 июня 2019

Ошибка указывает на то, что экспортированная функция с именем getArticles не существует в api / article.js .

Если посмотреть на этот модуль, он выглядит как проблема с заглавными буквами.Функция не написана заглавными буквами, поэтому при ее вызове используйте:

ArticleAPI.getarticles
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...