我有一个for loop
路由守卫,它调用beforeEach
动作。此操作执行对 Axios 的请求,其响应将填充状态。
但是,当从组件中的fetchWorkspaces
钩子调用状态并刷新页面时,我没有在控制台中获得值,而是在观察者中。
created
该操作正在返回一个承诺,但是created() {
console.log(this.workspace) # returns {__ob__: Observer}
}
挂钩没有等待该承诺解决。
这是路由器的钩子:
created
这是动作及其突变:
router.beforeEach((to, from, next) => {
store.dispatch('fetchWorkspaces').then(() => {
next()
})
}
在export default {
state: {
workspaces: []
},
mutations: {
SET_WORKSPACES(state, workspaces) {
state.workspaces = workspaces.workspaces
}
},
actions: {
fetchWorkspaces({ commit }) {
return Vue.axios.get('/workspaces').then(response => {
commit('SET_WORKSPACES', response.data)
})
}
}
钩子之后调用created
。我不明白为什么会发生这种现象以及如何解决它。
我要从beforeEach
访问新状态数据的原因是调用其他操作,这些操作将基于此状态数据获取资源。