我无法获得已挂载的vuex的状态值。
看来在mount状态下尚未设置(因为axios尚未成功加载)。
你们能帮我吗,非常感谢
对不起,我的英语不好
这是我的代码:
App.vue
export default {
created () {
this.$store.dispatch('retrieveOrderPaymentTypes')
},
computed: {
orderPaymentTypes: {
get () { return this.$store.getters['loadOrderPaymentTypes'] }
}
},
mounted: function () {
console.log(this.orderPaymentTypes) //won't work, return null
},
watch: {
orderPaymentTypes: function (val) {
console.log(val) //work, return object
}
}
}
store.js
export const store = new Vuex.Store({
state: {
orderPaymentTypes: null
},
getters: {
loadOrderPaymentTypes: function (state) {
return state.orderPaymentTypes
}
},
actions: {
retrieveOrderPaymentTypes ({ commit }) {
axios.get('myurl.php').then(function (response) {
commit('updateOrderPaymentTypes', response.data)
}).catch((error) => {
// silent is golden
})
}
},
mutations: {
updateOrderPaymentTypes (state, types) {
state.orderPaymentTypes = types
}
}
})
答案 0 :(得分:-1)
发生上述情况是因为您刚刚调度了请求,因此在api响应被检索并将数据存储在状态变量中之前,已执行挂接钩中的代码。
检索到api响应后,可以在axios调用中使用promise或async / await来获取结果。
mounted: function () {
this.retrieveOrderPaymentTypes.then(() => {
console.log(this.orderPaymentTypes)
}
}
从创建的挂钩中删除api调用代码。