我正在使用Laravel 5.7 + Vue2 + Vuex
在我的调度调用完成之后,我很难让Vue返回存储值。我的应用程序流程如下:
我遇到的问题是我仅提交空白表格,因此很明显返回了错误,我可以在Chrome DEV工具的“网络”标签中看到这些错误。在将错误存储在leaseStore状态之前,一切似乎都可以正常工作。我在控制台中收到以下错误:
Uncaught (in promise) TypeError: Cannot read property 'leaseStore' of undefined
我可能缺少一些小东西,但是我不知道哪里出了问题。我认为尝试将错误值提交为leaseStore状态时可能会出现问题,但是我不确定。
API调用:
postLeaseStore: function(data){
return axios.post('/api/lease',
data
);
}
操作:
addLease({ commit, state }, data) {
commit('setLeaseStore', 0);
LeaseAPI.postLeaseStore(data)
.then( function( response ) {
console.log('Success');
commit('setLeaseStore', 1);
})
.catch( function(error) {
console.log('Error');
return commit('setLeaseStore', 3);
});
}
Vue组件:
computed: {
leaseStore() {
return this.$store.getters.getLeaseStore;
}
},
methods: {
validate()
{
this.$store.dispatch('addLease', this.input).then(function () {
console.log(this.leaseStore);
});
}
}
答案 0 :(得分:2)
您正在丢失回调中的this
(Vue实例)范围,无法使用箭头功能()=>
修复该问题,如:
methods: {
validate()
{
this.$store.dispatch('addLease', this.input).then(()=> {
console.log(this.leaseStore);
});
}
}