FirebaseUI重定向后,仅在控制台悬停、窗口大小调整等时更新Vue组件

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

我正在使用FirebaseUI进行Vue(tify)登录。登录发生在v对话框中,并重定向到“帐户”页面。相关脚本:

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' })}
  }
},