(承诺)TypeError:无法读取未定义的属性'loggedUser'

时间:2020-06-07 09:54:24

标签: vue.js vuejs2 vue-component vuex

当我尝试使用在堆积的生命周期方法中来自getter的loggingUser时,抛出(承诺)TypeError:无法读取未定义错误的属性'loggedUser'。

computed: {
    ...mapGetters({
      loggedUser: 'auth/loggedUser',
      users: 'users/getAllUsers',
    }),

并在已安装的诺言中尝试过滤掉loggingUser

mounted() {
...
      .then(function(res) {
           this.groupedUsers = _.filter(res, function(groupedUser) {
            return groupedUser.userId !== this.loggedUser.userId;
          });
}

它在下一行中引发错误。

如何解决?

2 个答案:

答案 0 :(得分:0)

错误显示Cannot read property 'loggedUser' of undefined。您的代码为this.loggedUser,因此我假设this未定义。尝试发送this

公共trope在外部上下文中(内部安装)曾经是that = this,或者通过将其作为函数的参数发送(在.then fn内部),尽管更现代和更简单的方法是简单地使用箭头函数() => {},在此示例中,该函数允许您访问外部范围。

以任何一种方式,console.log(this)直到获得参考。问题不在范围内this

答案 1 :(得分:0)

始终使用箭头功能不会丢失上下文

mounted() {
...
      .then((res) => {
           this.groupedUsers = _.filter(res, (groupedUser) => {
            return groupedUser.userId !== this.loggedUser.userId;
          });
}