Реакция, ошибка синтаксического анализа TSX: ожидается выражение - PullRequest
0 голосов
/ 31 марта 2020

Ниже приведен код REACT для подробной информации.

Билет - это основной объект, и я хочу при загрузке добавить имя билета в формате .pdf.

Так что мне нужен решение передать имя конкретного билета в функцию handleDownload

В разделе рендеринга нет проблем с объявлением ticket.ticketName et c. Но с onClick возникает проблема.

type TicketProps =
    TicketStore.TicketState &
    typeof TicketStore.actionCreators & 
    RouteComponentProps<{ticketId: string}>;

class Ticket extends React.PureComponent<TicketProps> {

    public componentDidMount() {
        this.ensureDataFetched();
    }    

    private ensureDataFetched(){
        this.props.requestTicket(+this.props.match.params.ticketId);
    }

    handleDownload = () =>{
        Axios.get(`${apiUrl}/api/tickets/download/${this.props.match.params.ticketId}`,{responseType: 'arraybuffer',
            headers: { "Content-Type": 'application/pdf' }
          }).then((response) => {
            const url = window.URL.createObjectURL(new Blob([response.data]));
            const link = document.createElement('a');
            link.href = url;
            link.setAttribute('download', "test"+.pdf");
            document.body.appendChild(link);
            link.click();
        });
    }

    public render() {
        let ticket = this.props.ticket;
        if(this.props.isLoading){
            return <span>Laen andmeid...</span>;
        }
        if (ticket === undefined) {
            return <h1>Piletit ei leitud</h1>;
        }
        let name = ticket.ticketName
        return (
            <React.Fragment>
                <h3>Üritus: {ticket.ticketName}</h3>
                <Table striped hover size="sm">
                    <tbody>
                        <tr>
                            <td className="details">Asukoht:</td>
                            <td>{ticket.eventLocation}</td>
                        </tr>
                        <tr>
                            <td className="details">Kuupäev:</td>
                            <td>{ticket.eventDate}</td>
                        </tr>
                        <tr>
                            <td className="details">Lisainfo:</td>
                            <td>{ticket.extraInfo}</td>
                        </tr>
                        <tr>
                            <td className="details">Pilet:</td>
                            <td>{ticket.pdfTicket}</td>
                        </tr>
                    </tbody>
                </Table>
                <Button onClick={this.handleDownload}>Lae alla</Button>
                <Popup trigger={<button className="btn btn-primary">Show location on map</button>} position="bottom left">
                <div><Maps aadress={ticket.eventLocation}></Maps>></div>
                </Popup>
                <Link to='../tickets'>
                    <Button color='primary' onClick={()=>{}}>
                        Tagasi
                    </Button>
                </Link>
                <br></br>
            </React.Fragment>
        );
    }
}

export default connect(
    (state: ApplicationState) => state.ticket,
    TicketStore.actionCreators
    )(Ticket as any);

Я получаю ошибку разбора после заявки?

Есть мысли? Спасибо

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Решение было добавить

  if(this.props.ticket===undefined){
        return //something;
    }

Перед использованием объекта.

0 голосов
/ 31 марта 2020

Используйте следующий код без вопросительных знаков:

<Button onClick={()=>{this.handleDownload(ticket.id,ticket.ticketName)}}>Lae alla</Button>
...