Как исправить проблему с областью действия внутри функции «then»? - PullRequest
0 голосов
/ 02 июля 2019

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

Cannot read property 'restaurant_name' of undefined

Как я могу передать state в область действия then функции qz?

print = () => {
    let { state } = this.state;
    qz.websocket.connect()
    .then(function() {
     return qz.printers.find("BillPrinter");
   }).then(function(printer) {
         var config = qz.configs.create(printer);
         var data = [
              `${state.restaurant_name}` + '\x0A',
              `${state.restaurant_address}`
         ]

         return qz.print(config, data);
    });
}

Ответы [ 2 ]

1 голос
/ 02 июля 2019

У вас есть ненужная деструктура, которая вызывает вашу ошибку - this.state.state не существует, но эта строка:

let { state } = this.state;

Эквивалентно:

let state = this.state.state;

Удалите фигурные скобки, и все будет хорошо.

let state = this.state;

Также обратите внимание, что state будет ссылкой на this.state, а не другим объектом.

0 голосов
/ 02 июля 2019

Используйте функцию стрелки, чтобы сохранить функцию в верхней области видимости, как @ Али Торки предложил:

.then(printer => {....})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...