我是Vue和firebase的新手。
我想在用户登录时刷新我的数据。
我正在考虑制作一个刷新方法并触发它onAuthStateChanged
,但它不起作用(ERR:未定义)。
以下是我的代码,这是在组件文件中。
let auth = Firebase.auth()
auth.onAuthStateChanged(function (user) {
if (user) {
refresh(user.uid,user.displayName)
}
}
export default {
name: 'chat_app',
firebase: {...},
data () {
return {
dialogNumber: 1,
currentUserId: 1,
currentUserName: 'A',
...
},
methods: {
refresh: function (uid,displayName) {
this.currentUserId = uid
this.currentUserName = displayName
}
}
}
答案 0 :(得分:1)
在onAuthStateChanged
回调中,您正在调用refresh
,而JS正在理解这是一个函数。您尚未定义任何名为refresh
的函数。你所拥有的是与Vue相关联的refresh
方法。
考虑使用mounted
生命周期挂钩并使用this.refresh
。但是,确定范围可能是一个问题,因此请确保将this
引用存储在变量中:
mounted: function() {
var this_vue_instance = this;
let auth = Firebase.auth();
auth.onAuthStateChanged(function (user) {
if (user) {
this_vue_instance.refresh(user.uid, user.displayName);
}
});
}
有关mounted
生命周期挂钩的详细信息,请参阅relevant documentation。