用户使用Vue.js登录时无法刷新数据

时间:2017-12-31 07:40:25

标签: firebase authentication vue.js

我是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
    }
  }
}

1 个答案:

答案 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