@AL_3

Почему не видна переменная из второй анонимной функции?

Привет всем.
Использую vue.js, есть такой кусок кода:
props: ['user'],

        computed: {
            incomingActive: function () {
                let user_name = this.user;
                this.messages.forEach(function (message) {
                    alert('user_name is: ' + user_name);   // <-- обращение к переменной здесь
                  /* ... */
                    return incomingActive;
                });
            }
        },


Хочу обратится к переменной props: ['user'], пишу this.user и user, но вылетают ошибки [Vue warn]: Error in render: "TypeError: this is undefined" и user is not defined, приходится создавать промежуточную переменную user_name. Объясните, пожалуйста, почему так происходит и как избежать создания лишней переменной?
Заранее спасибо.
  • Вопрос задан
  • 315 просмотров
Решения вопроса 2
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Комментировать
nikichv
@nikichv
Frontend dev. Current stack: Next.js/RTK/Saga
В вашем случае вы теряете this, который равен инстансу компонента. Чтоб "не потерять" его, используйте стрелочную функцию.
Из документации:
Стрелочные функции не создают собственный контекст this, а используют значение this окружающего контекста.


computed: {
  incomingActive() {
    this.messages.forEach((message) => {
      alert('user_name is: ' + this.user);
      /* ... */
      return incomingActive;
    });
  },
},
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы