【发布时间】:2019-10-31 14:05:28
【问题描述】:
我有一个beforeEach 路由守卫,它调用fetchWorkspaces 操作。此操作向 Axios 执行请求,其响应填充状态。
但是,当从组件中的 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 钩子之后调用。我不明白为什么会发生这种行为以及如何解决它。
我想从created 获取新状态数据的原因是调用其他将基于此状态数据获取资源的操作。
【问题讨论】: