微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将响应表单Axios分派发送到reactjs中的类组件? 对于react-pdf

如何解决如何将响应表单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);
        });
    },}

和我生成PDF的功能类似

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存储区

  1. 使用减速器将响应保存在商店中
  2. 将状态映射到道具https://react-redux.js.org/using-react-redux/connect-mapstate

此处有完整的教程:https://react-redux.js.org/introduction/basic-tutorial

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。