【发布时间】:2018-09-13 08:13:13
【问题描述】:
我有一个非常普通的 Vuex 存储文件,代码如下:
//store.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export const store = new Vuex.Store({
state: {
loading: true,
companyBasicInfo: [
]
},
mutations: {
getCompanyBasicInfo: (state, res) => {
state.companyBasicInfo.push(res);
},
changeLoadingStatue: (state, loading) => {
state.loading = loading;
}
},
actions: {
getCompanyBasicInfo: context => {
// HERE IS MY AXIOS REQUESTS
}
}
});
我正在 getCompanyBasicInfo() 操作中编写我的 axios 请求,一切正常。
我想做什么
将我的 AXIOS 请求分离到另一个文件中,然后在我的 store.js 文件中调用它们,以减少我的 store.js 文件..
我尝试过的
我尝试创建名为 requests.js 的文件并在其中写入以下代码:
import axios from 'axios';
export default GET_COMPANY_DETAILS = () => {
setTimeout(() => {
axios.get('http://localhost:3000/companies/show/trade key egypt').then((res) => {
context.commit('getCompanyBasicInfo', res.data);
context.commit('changeLoadingStatue', false);
}).catch(e => {
console.log(e);
});
}, 3000);
};
然后尝试将它们导入我的 store.js 文件中
import requests from './requests';
问题
每当我尝试在getCompanyBasicInfo() 操作中写入requests.GET_COMPANY_DETAILS(); 时,我都无法访问requests.js 文件中的方法。
我得到错误
Uncaught ReferenceError: GET_COMPANY_DETAILS is not defined 在控制台中
【问题讨论】:
-
你得到什么错误?
-
我刚刚在
axios-middleware和axios-resource上写了an answer 的示例,这有助于解决这个问题。 -
@Prashant 我已经编辑了我的问题
-
为什么要将 axios 调用包装在
setTimeout中? -
@EmileBergeron 问题是我无法从我的文件中访问任何变量,不仅是 axios 请求函数
标签: javascript vue.js vuex