【发布时间】:2020-12-08 13:01:06
【问题描述】:
我需要从端点获取数据,然后将数据分配给存储中的状态变量。
代码看起来像这样。
import Vue from 'vue'
import axios from 'axios'
import Vuex from 'vuex'
Vue.use(Vuex)
export const store = new Vuex.Store({
state: {
sample: 'foo',
sample2 : [],
sample3: []
},
getters:{
},
actions:{
getData(context){
axios.get('/endpoint').then(function(response){
console.log(context.state);
console.log(context.state.sample);
console.log(response);
context.state.sample = 'bar';
console.log(context.state.sample);
context.state.sample2 = response.data.sample2data;
context.state.sample3 = response.data.sample3data;
}
);
}
},
mutations:{
}
});
据我所知,问题在于应用程序根本不执行 axios 请求。我已经在其他地方测试了端点,我确定请求本身没有问题。当然,每次挂载我的应用程序时都应该执行请求?
【问题讨论】:
-
你在哪里执行这个动作?
-
在 store.js 文件中。我将商店导出到创建 vue 应用程序的 main.js 文件。据我所知,这是一种标准模式。
-
应该从你的组件中调用一个动作来执行。将 store.js 导出到 main.js 只是告诉 vue 你将使用这个文件作为一个搅拌器
-
啊,我明白了。我需要在应用程序级别执行操作,因为我希望这些数据始终可供所有组件使用。有没有办法做到这一点?
-
它会因为它保存在状态中