如何解决函数反应"then"范围问题?



我正在尝试从打印机打印出来。我对反应和javascript有点陌生。我正在尝试将状态传递给第三方代码的当时功能。但是我收到一个错误:

Cannot read property 'restaurant_name' of undefined

如何将state传递到qzthen功能的范围?

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);
});
}

您有一些不必要的解构导致错误 -this.state.state不存在,但这一行:

let { state } = this.state;

相当于:

let state = this.state.state;

取下大括号,它会正常工作。

let state = this.state;

另请注意,state将是对this.state的引用,而不是另一个对象。

按照 Torki @Ali 的建议,使用箭头函数将函数保持在上部范围内:

.then(printer => {....})

最新更新