我正在尝试从打印机打印出来。我对反应和javascript有点陌生。我正在尝试将状态传递给第三方代码的当时功能。但是我收到一个错误:
Cannot read property 'restaurant_name' of undefined
如何将state
传递到qz
then
功能的范围?
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 => {....})