我正在尝试在解析Promise之后在.then()内执行this.setstate。 但似乎这在当时是未定义的。
在做了一些阅读之后,我发现(this)需要绑定在then()中。 但是,我不清楚如何绑定它。
下面是我的原始代码。
function deleteOld() {
var app = SpreadsheetApp;
var orderSheet = app.getActiveSpreadsheet().getSheetByName("POTemplate");
var historySheet = app.getActiveSpreadsheet().getSheetByName("POHistory");
var poNO = orderSheet.getRange("E9").getValue();
var lastRow = historySheet.getLastRow();
var myRange = historySheet.getRange("A2:A" + lastRow);
var data = myRange.getValues();
var row = 1;
for(i = 0; i < data.length; i++) {
if(data[i][0] != poNO){
row++; // Go to the next row
continue;
} else {
historySheet.deleteRow(row);
row--; // Deleted a row
}
}
}
以下是正确的做法吗?
var productSource = await this.state.productAll.filter(
product => product.exchangeId === exchange.exchangeId
);
var productOptions = await this.state.productAll.filter(
product => product.exchangeId !== exchange.exchangeId
);
Promise.all([productSource, productOptions])
.then((promises) => {
this.setState({
currentExchange: exchange,
currentCurrency: exchange.baseCurrency,
originExchange: exchange,
productSource: promises[0],
productOptions: promises[1]
});
this.refresh();
});
谢谢!
答案 0 :(得分:0)
为了确保this
的{{1}}具有正确的上下文,我认为这是一个很好的约定,在构造函数中绑定this.setState
确保它对应于拥有的这个组件类this
方法。
setState