首页 > 解决方案 > setState 回调在 React 16 中的渲染完成之前执行

问题描述

我有一段代码,

this.setState({ generateGraphTableforPDF: true }, () => {
 this.generatePDFData(true);
 this.setState({ generateGraphTableforPDF: false });
});

此 setstate 回调在渲染完成之前执行,因此在 dom 中没有表,因此会生成空的 pdf。

我试图删除回调函数并将它们写入 componentDidUpdate 并设置超时 0。但问题是这在某些情况下也失败了。

标签: reactjsreact-16

解决方案


你可以这样做,

this.setState({ generateGraphTableforPDF: true }, () => {
   this.generatePDFData(true);
});

function generatePDFData(bool){
   //Your logic to generate PDF
   this.setState({ generateGraphTableforPDF: false });
}

推荐阅读