Переменная не определена при использовании вне конструктора компонента - PullRequest
0 голосов
/ 01 января 2019

Я работаю над проектом с React и Electron, и у меня есть ошибка.У меня есть компонент с конструктором, который принимает реквизит (которые приходят в виде двух переменных.) Конструктор создается в отдельном файле.Проблема в том, что переменная работает нормально (например, если вы делаете console.log для ее вывода) в конструкторе, но за ее пределами переменные возвращаются неопределенными.

Я уже пытался использовать .bindсвязать это, но это не помогло, и все равно оказалось неопределенным.

Здесь вызывается конструктор:

const dropDown = new Dropdown({
  editor,
  monaco
});

Вот конструктор и пример того, где я пытаюсь использовать переменные:

constructor(props) {
  super(props);

  // Define variables
  this.editor = props.editor;
  this.monaco = props.monaco;
  // Returns correct object
  console.log(this.monaco);

  // Bind functions
  this.changeLanguage = this.changeLanguage.bind(this);
  this.filterFunction = this.filterFunction.bind(this);
  this.dropDown = this.dropDown.bind(this);
}

changeLanguage(language) {
  // Returns undefined all the time
  console.log(this.monaco);
  this.monaco.editor.setModelLanguage(this.editor, language);
}

Iожидается, что переменная будет одинаковой как в конструкторе, так и в функциях в другом месте файла, но по какой-то причине она определена только в конструкторе.

1 Ответ

0 голосов
/ 01 января 2019

Вы можете использовать this.props.monaco.Или вы можете передать реквизиты в функцию changeLanguage, если переписать ее

changeLanguage(language, props) {
  // Returns undefined all the time
  console.log(props.monaco);
  props.monaco.editor.setModelLanguage(this.editor, language);
}

и вызвать ее: this.changeLanguage('English', this.props)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...