如何解决如何将响应表单Axios分派发送到reactjs中的类组件? 对于react-pdf
我正在使用React-PDF生成PDF,我希望从发帖请求到mapdispatchToProps
中的API的响应中获取pdf数据。我的代码是
const mapdispatchToProps = (dispatch) => {
return {
onSave: (data) => {
Agent.API.add(data)
.then((response) => {
dispatch({ type: "SAVE" });
})
.catch((err) => {
console.log(err);
});
},}
class Component extends React.Component {
generatePdfDocument = async (documentData) => {
this.props.onSave(documentData)
const blob = await pdf(<InvoiceTemplate data={dataFromrequest} />).toBlob();
saveAs(blob,"test.pdf");
};
render() {
return <Button onClick={() => this.generatePdfDocument(data)} </Button>
}
}
在generatePdfDocument
中,我调用发生请求的函数,然后将响应从原先的响应传递给<Template>
作为道具。我怎么做?
PS-documentData来自redux存储。
解决方法
您希望将此请求Agent.API.add(data)
的结果传递到您的<InvoiceTemplate/>
组件。
您需要将请求响应存储在redux存储中,或从onSave函数返回。
从onSave函数返回:
onSave: (data) => {
return Agent.API.add(data)
.then((response) => {
dispatch({ type: "SAVE" });
return response;
})
.catch((err) => {
console.log(err);
});
},
然后将此数据传递给您的组件
generatePdfDocument = async (documentData) => {
const dataFromRequest = await this.props.onSave(documentData)
const blob = await pdf(<InvoiceTemplate data={dataFromRequest} />).toBlob();
...
}
使用redux存储区
- 使用减速器将响应保存在商店中
- 将状态映射到道具https://react-redux.js.org/using-react-redux/connect-mapstate
此处有完整的教程:https://react-redux.js.org/introduction/basic-tutorial
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。