Javascript 如何在vue中使用全局变量,它不会更新计算变量?

Javascript 如何在vue中使用全局变量,它不会更新计算变量?,javascript,firebase,vue.js,firebase-authentication,vuetify.js,Javascript,Firebase,Vue.js,Firebase Authentication,Vuetify.js,我正在构建一个webapp,现在正在使用firebase实现身份验证。 我让登录界面正常工作,现在我想将此数据共享给应用程序的其余部分 因为我没有使用Vuex,所以我尝试使用Vue.prototype.$userData={}来生成一个全局变量,这样我就不用担心传递它了 我在app.js中创建的变量如下: mounted(){ firebase.auth().onAuthStateChanged(函数(用户){ 如果(用户){ //在这里检索一些额外的用户数据 火基 .firestore() .

我正在构建一个webapp,现在正在使用firebase实现身份验证。 我让登录界面正常工作,现在我想将此数据共享给应用程序的其余部分

因为我没有使用Vuex,所以我尝试使用Vue.prototype.$userData={}来生成一个全局变量,这样我就不用担心传递它了

我在app.js中创建的变量如下:

mounted(){
firebase.auth().onAuthStateChanged(函数(用户){
如果(用户){
//在这里检索一些额外的用户数据
火基
.firestore()
.collection('用户')
.doc(user.uid)
.get()
.然后(功能(文档){
如果(文件存在){
console.log(doc.data())//此日志有效
prototype.$userData={…user,…doc.data()};
}否则{
//在这种情况下,将不定义doc.data()
console.log('没有这样的文档!');
}
})
.catch(函数(错误){
log('获取文档时出错',错误);
});
}
});
}
然后,我尝试在如下组件中使用它:

计算:{
用户名:函数(){
if(此.$userData){
返回此。$userData.naam;
}否则返回“-”;
}
}
但是当$userData完成时,它似乎不会更新。这里出了什么问题。 计算出的值是否不在全局变量上更新


另外,当我修改代码以便在npm运行服务中重新编译构建时,用户名就会出现。然后,当我刷新页面时,它不再工作。

使用
watch
而不是计算属性

watch:{
  '$userData' = function(newValue){
     ...
     this.name = newValue.name;
     ...
  }
}
有关更多信息,请访问:

PS:假设您可以在整个Vue应用程序中访问
$userData