не могу импортировать vuex store в файл запроса - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь вызвать мутацию при отправке запроса и получении ответа. это мой файл запроса:

 import axios from 'axios'
import router from '@/router'
import _ from 'lodash'

const instance = axios.create({
    baseURL: process.env.BASE_URL,
    timeout: 31000,
    headers: {
        Accept: 'application/json'
    },
});

const token = localStorage.getItem('access_token');
if(!_.isNil(token)) {
    instance.defaults.headers.Authorization = 'Bearer ' + token;
}


instance.interceptors.response.use(function (response) {
    return response
}, function (error) {
    if (error.response.status === 401) {
        router.push('/introduction')
    }
});

export default instance

и это мой главный магазин

const vuexLocal = new VuexPersistence({
    storage: window.localStorage
});

Vue.use(Vuex);
axios.defaults.baseURL = 'http://api.balatar.inpin.co/';
export const store = new Vuex.Store({
    plugins: [vuexLocal.plugin],
    modules: {
            user,jobPost, company, application, cvFolder, event
        },
        state: {
            loader:''
        },
        getters: {

        },
        mutations: {
            LOADER:function (state, payload) {
                state.loader=payload;
                console.log('MUTATION')
            }
        },

        actions: {



        },
    });

когда я пытаюсь импортировать магазин, как показано ниже

impotr {store} from '@/store/store'

и затем получите доступ к мутации LOADER, как это:

store.commit('LOADER') 

возвращает ошибку, которая не может прочитать фиксацию свойства undefined. как мне это сделать?

1 Ответ

0 голосов
/ 04 ноября 2018

Вы должны написать действие, затем отправить запрос своим действием, и как только ответ придет, вы сможете commit a mutation

например, в следующем действии:

{
  /**
   * Login action.
   *
   * @param commit
   * @param payload
   */
  login: async function ({ commit }, payload) {
    commit('LOGGING_IN')

    try {
      const result = await fetchApi({
        url: 'http://api.example.com/login',
        method: 'POST',
        body: payload
      })
      commit('LOGIN_SUCCESS', result)
    } catch (error) {
      commit('LOGIN_FAILURE', error)
    }
  }
}

Как вы можете видеть выше, как только вы вызываете логин, он вызывает мутацию LOGGING_IN и отправляет запрос на какой-либо адрес, затем ожидает ответа. если он получает успешный ответ, мутация LOGIN_SUCCESS с полезной нагрузкой результата фиксирует, иначе она фиксирует LOGIN_FAILURE с полезной нагрузкой кэшированной ошибки.

примечание: вы должны предоставить свой собственный fetchApi метод, который является обещанием.

...