React-pdf отправить несколько значений - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь создать форму, в которой вы вводите некоторые значения в этом случае, имя и фамилию, а затем вы создаете PDF-файл. Я использую https://react-pdf.org/advanced#on - рендеринг на лету , чтобы облегчить задачу. Однако мне удалось отправить только одно значение. Отрывок кода ниже:

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

Я пробовал несколько вариантов введения второго значения, которое отображается как undefined в console.log, поэтому оно не работает, не говоря уже о гораздо большей форме. Это полный объем кода https://codesandbox.io/s/strange-ramanujan-847ph?file= / src / App. js

Извините, мне не удалось заставить его работать в codeandbox, но он работает в моем редакторе кода.

1 Ответ

0 голосов
/ 28 мая 2020

Удалось заставить его работать, и да, вы можете ввести как можно больше значений

 <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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...