FirebaseUI重定向后,仅在控制台悬停、窗口大小调整等时更新Vue组件
我正在使用FirebaseUI进行Vue(tify)登录。登录发生在v对话框中,并重定向到“帐户”页面。相关脚本:FirebaseUI重定向后,仅在控制台悬停、窗口大小调整等时更新Vue组件,firebase,vue.js,vuetify.js,Firebase,Vue.js,Vuetify.js,我正在使用FirebaseUI进行Vue(tify)登录。登录发生在v对话框中,并重定向到“帐户”页面。相关脚本: export default { data() { let uiConfig = { signInSuccessUrl: "/account", signInOptions: [ firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.Facebook
export default {
data() {
let uiConfig = {
signInSuccessUrl: "/account",
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
]
},
return {
uiConfig: uiConfig
}
}
}
另一方面,account页面如下所示:
<template>
<div v-if="user">{{ user.displayName }}</div>
</template>
<script>
export default {
data() {
return {
user: null
}
},
created() {
firebase.auth().onAuthStateChanged(user => {
if (user) {
this.user = { displayName: user.displayName };
}
});
}
}
</script>
{{user.displayName}
导出默认值{
数据(){
返回{
用户:空
}
},
创建(){
firebase.auth().onAuthStateChanged(用户=>{
如果(用户){
this.user={displayName:user.displayName};
}
});
}
}
我的预期行为:我点击其中一个登录选项(比如谷歌),它会将我重定向到/account。然后它呈现div并显示我的用户名
实际行为:重定向后,页面保持空白。当我打开抽屉、调整窗口大小或将鼠标悬停在chrome DevTools中的Vue developer控制台上时,页面将正确呈现
我认为这是因为DOM没有成功渲染。。。但不管我怎么努力,我都无法让它工作
有什么想法吗?两个组件中的数据部分应如下所示:
data() {
return {
uiConfig: {
signInSuccessUrl: "/account",
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
]
}
}
}
最后,问题似乎在于FirebaseUI的signinsucessful方法如何与vue路由器配合使用:不太好。为了避免这个问题,我删除了这个方法,并添加了一个在成功登录时触发的回调
uiConfig: {
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID
],
callbacks: {
signInSuccessWithAuthResult: function() {this.$router.push({ path: 'account' })}
}
},
通过此更改,可以实现预期的行为。尝试在已安装的而不是已创建的钩子中加载用户。恐怕没有更改。您完全正确。我的打字错误。我已经编辑了我的代码。不幸的是,没有。你的建议是我的代码在开始时是如何的,但我在这里输入的不正确。你能在JSFIDLE中简化你的代码吗?
uiConfig: {
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID
],
callbacks: {
signInSuccessWithAuthResult: function() {this.$router.push({ path: 'account' })}
}
},