vue.js - 用户登录应用程序后如何打开 vuetify 对话框
问题描述
在我的应用程序中,我想显示一个模式来在我的应用程序中介绍用户,因此它只会在他第一次登录时出现。我正在做的是存储isNewUser
在全局状态中并使用它来知道它是否应该呈现模态或不使用此答案中描述的相同过程。(我没有使用事件总线)
这是我的父组件:
<template>
<Intro :value="isNewUser" @input="finishTutorial" />
</template>
mounted() {
const store = this.$store;
this.isNewUser = store.state.auth.user.isNewUser;
},
当用户登录并呈现此组件时,我看到对话框正在呈现并关闭。如果我按 f5,它会重新加载页面并正确显示对话框。
如果我进行以下修改,它可以工作,但我不想以这种方式解决问题,因为它不适用于所有情况,这取决于用户计算机/互联网的速度。
mounted() {
setTimeout(() => {
const store = this.$store;
this.isNewUser = store.state.auth.user.isNewUser;
}, 2000);
},
我也尝试过使用 v-if
<template>
<Intro v-if="isNewUser" :value="true" @input="finishTutorial" />
</template>
<script>
export default {
components: {
Intro,
},
data() {
return {
isNewUser: false,
};
},
mounted() {
const store = this.$store;
this.isNewUser = store.state.auth.user.isNewUser;
},
methods: {
async finishTutorial() {
this.$store.dispatch('auth/finishTutorial');
this.isNewUser = false;
},
},
};
</script>
解决方案
您可以使用计算属性来执行此操作:
computed: {
isNewUser() {
return this.$store.state.auth.user.isNewUser;
}
}
在模板中你会这样做:
<template>
<Intro :value="isNewUser" @input="finishTutorial" />
</template>
推荐阅读
- ios - 来自 firebase 函数的错误消息显示“请求无效,无法处理。”
- ruby-on-rails - 使用 Savon gem 格式化 SOAP API 的问题
- rust - 地图 Vec
值克隆到 Vec<&str> - r - 地块的下部被部分抹去
- c# - 测试断言是否应该与硬编码值或来自测试数据的值进行比较?
- regex - 一个正则表达式捕获多个以模式开头的组
- r - 使用 DiagrammeR 调整中介图中的边缘标签位置?
- javascript - 存储 2000 张图像
- python - 在请求 python 中读取特殊字符时出现问题。各种不成功的尝试
- amazon-web-services - 与端口相关的 AWS 问题(当端口打开但无法连接时)