React-pdf 提交多个值

React-pdf submit multiple values

我正在尝试创建一个表单,在这种情况下,您可以在其中输入一些值,名称和姓氏,然后生成一个 pdf。 我正在使用 https://react-pdf.org/advanced#on-the-fly-rendering 来帮助完成任务。但是,我只提交了一个值。代码摘录如下:

<BlobProvider
          document={MyDoc({
            value: this.state.value,
          },{
            value1: this.state.value1,
          })}
        >
          {({ url }) => (
            <a href={url} target="_blank">
              Print
            </a>
          )}
        </BlobProvider>

我已经尝试了多个选项来引入第二个值,它在 console.log 时显示为未定义,所以它不起作用,更不用说更大的形式了。 这是代码的完整范围 https://codesandbox.io/s/strange-ramanujan-847ph?file=/src/App.js

抱歉,我没能在 codesandbox 中运行它,但它在我的代码编辑器中运行。

设法让它发挥作用,是的,您可以引入尽可能多的值

 <BlobProvider
          document={MyDoc({
            value: this.state.value,
            surname: this.state.surname, 
**more values here**
          })}
        >
          {({ url }) => (
            <a href={url} target="_blank">
              Print
            </a>
          )}
        </BlobProvider>

以下代码的完整范围:

import React from "react";
import { BlobProvider, Document, Page, Text, View } from "@react-pdf/renderer";

const MyDoc = ({ value, surname }) => (
  <Document>
    <Page wrap>
      <Text>Section #1</Text>

      <View style={{ flexDirection: "row", margin: "2", color: "blue" }}>
        <Text style={{ padding: 10 }}>Name : </Text>
        <Text style={{ padding: 10 }}>{value}</Text>
        {console.log("name", value)}
      </View>

      <View style={{ flexDirection: "row", margin: "2", color: "blue" }}>
        <Text style={{ padding: 10 }}>Surname : </Text>
        <Text style={{ padding: 10 }}>{surname}</Text>
        {console.log("surname", surname)}
      </View>
    </Page>
  </Document>
);

class App extends React.Component {
  state = { value: "", surname: "" };

  render() {
    return (
      <div >
        <div>Pdf Generator</div>
        <form>
          <div >
            <div >
              <label>name</label>
              <input

                value={this.state.value}
                type="text"
                onChange={(e) => this.setState({ value: e.target.value })}
                placeholder="name"
              />
            </div>

            <div>
              <label>surname</label>
              <input
                value={this.state.surname}
                type="text"
                onChange={(e) => this.setState({ surname: e.target.value })}
                placeholder="surname"
              />
            </div>
          </div>
        </form>

        <BlobProvider
          document={MyDoc({
            value: this.state.value,
            surname: this.state.surname,
          })}
        >
          {({ url }) => (
            <a href={url} target="_blank">
              Print
            </a>
          )}
        </BlobProvider>
      </div>
    );
  }
}

export default App;