Реакция собственных вызовов функций не работает - не удается найти `this.function2` - PullRequest
0 голосов
/ 26 апреля 2018

Я не могу заставить это работать. Это может быть просто, но в Интернете просто нет информации, которая работает.

Вот что я пытаюсь сделать.

class Test {
  componentDidMount() {
      this.function1();
  }      

  function1() {
     var myListener = listener.on(something) {
         console.log('function1 triggered');
         key = 'djh3489739082';
         name = 'gary';
         email = 'gary@email.com';
         this.function2(key, name, email);
     }
  }

  function2 = ({ key, name, email }) => {
     console.log('key: ' + key);
     console.log('name: ' + name);
     console.log('email: ' + email);
  }
}

Вот и все. Я получаю сообщение об ошибке: консоль не может найти переменную this.function2.

Не работает, когда я пытаюсь удалить префикс this.. У меня также есть гораздо более простой вызов функции в моем коде, который отлично работает следующим образом:

  function3() {
     // Some code here
     this.function4();
  }

  function4() {
     // Do some things.
  }

И function3 звонит function4 без проблем. Это просто потому, что мне нужно передать параметры, что он падает, и, как ни один онлайн не должен делать это, по-видимому. Единственные примеры, которые я нашел, используют const перед функцией. Так как:

const function2 = ({ parameter1, parameter2, parameter3 }) => {

Но это немедленно выдает ошибку. Я не могу использовать const или var или что-нибудь из этого.

Это должно быть легко, конечно! Есть идеи?

1 Ответ

0 голосов
/ 26 апреля 2018

Вот что не так в вашем коде. Сколько параметров принимает ваш function2? Один , не три, а один. Он принимает объект JSON в качестве параметра, который имеет 3 свойства: key, name и email, потому что вы заключили их в {}, но когда вы вызываете его в function1, вы передали 3 параметра это без {}, что делает его не объектом JSON.

Итак, вы можете:

// Don't modify function2 but change function1 like so
function1() {
    this.function2({ key, name, email })
}

или

// Don't modify function1 but change function2 like so
function2(key, name, email) {

}
...