请参阅编辑#1 - 我正在使用Vue.js并正在更改同事代码。目标是检查我们的Vuex商店中是否有用户,如果没有提醒用户登录/注册。如果没有登录,它将返回false,但是“TOGGLE_LIKED”'仍在被召唤。
目前看起来像这样:
check(){
if (typeof this.$store.state.user === 'undefined' || !this.$store.state.user) {
alert('please signin in the upper-right'); /* eslint-disable-line no-alert */
return false;
}else{
return true;
}
},
toggleLiked() {
if (this.check()) {
this.isRunningToggle = true;
this.$store.dispatch('TOGGLE_LIKED', this.item).then(() => {
this.isRunningToggle = false;
});
代码有什么问题,这样如果你没有登录,那就是“TOGGLE_LIKED”'路径是不是被称为?
所以,如果我切换到这样的事件总线调用:
if (EventBus.$emit('checkLoggedIn')) {
this.isRunningToggle = true;
this.$store.dispatch('TOGGLE_LIKED', this.item).then(() => {
this.isRunningToggle = false;
});
}
在根组件中使用checkLoggedIn:
EventBus.$on('checkLoggedIn', () => {
console.log(this.$store.state.user);
if (typeof this.$store.state.user === 'undefined' || !this.$store.state.user) {
alert('please signin in the upper-right');
return false;
}else{
alert('this is true');
return true;
}
});
第一个警报被呼叫但是第二个ISN' T。因此,如果我们返回错误,为什么检查会有效地返回"真正?