在vuex商店中,我有此突变,它从一个组件接收味精,并在另一个组件上显示/隐藏提示消息(如成功登录后的You are logged in
提示):
setPromptMsg: function (state, msg) {
state.showPromptMsg = true;
state.promptMsg = msg;
function sleep (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
sleep(3000).then(() => {
store.showPromptMsg = false;
state.promptMsg = '';
console.log('show message set to false');
});
},
在compoenet中,我从商店收到
showPromptMsg
作为计算属性:computed: {
showPromptMsg () {
return this.$store.state.showPromptMsg;
},
promptMsg () {
return this.$store.state.promptMsg;
}
}
模板中的显示/隐藏提示消息:
<div v-show="showPromptMsg">
<div class="text-center" >
<strong> {{promptMsg}} </strong>
</div>
</div>
问题是当提示超时时,即在商店将
showPromptMsg
设置为false时,更改不会反射(reflect)到组件中,因此通知框不会消失。我想知道解决这个问题的惯用方式是什么?
最佳答案
代码正在设置
store.showPromptMsg = false;
我希望你想要
state.showPromptMsg = false;