我的React应用程序中有一个axios呼叫
}).then(res =>
this.setState({
name: res.data.fname,
sName: res.data.sname,
percentage: res.data.percentage,
result: res.data.result,
showResult: true,
type: this.typeHandler(res.data.percentage)
}));
}
完成请求并设置状态后,我想将输入表单设置为空白。所以我尝试了
}).then(res =>
this.setState({
name: res.data.fname,
sName: res.data.sname,
percentage: res.data.percentage,
result: res.data.result,
showResult: true,
type: this.typeHandler(res.data.percentage)
})
).then(
this.setState(prevState =>{
return {inputName: '', inputSname: ''}
}))
}
使用另一个诺言,在第一个诺言之后得到解决,但是在设置请求状态之前,表格仍设置为空白。我也尝试过使用回调,但是第一个.then()方法不接受第二个参数。我该怎么解决?
答案 0 :(得分:1)
setState可以回叫
public void toggleCheckbox(ValueChangeEvent valueChangeEvent) {
// Add event code here...
Boolean checked = (Boolean) valueChangeEvent.getNewValue();
//get list
ADFContext adfCtx = ADFContext.getCurrent();
Map params = adfCtx.getPageFlowScope();
List<Row> list = (List<Row>) params.get("docQueue");
if (list == null) {
list = new ArrayList<CopyQueuePojo>();
}
DCBindingContainer bindings = (DCBindingContainer) BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding documents = bindings.findIteratorBinding("documentsIterator");
int index = documents.getCurrentRowIndexInRange();
Row[] rows = documents.getAllRowsInRange();
Row line = rows[index];
if (checked) {
//add to queue
if (index >= 0) {
//check to make sure there are no duplicates
boolean exists = false;
for(int i=0; i<list.size(); i++) {
if(list.get(i).getId() == ((String) line.getAttribute("id"))) {
exists = true;
break;
}
}
if (!exists) {
list.add(line);
}
}
} else {
//remove from queue
for(int i=0; i<list.size(); i++) {
if(list.get(i).getId() == ((String) line.getAttribute("id"))) {
list.remove(i);
}
}
}
params.put("docQueue", list);
}
而不是另一个,然后将此回调传递给setState