#reactjs #react-hooks
#reactjs #реагирующие перехваты
Вопрос:
Я новичок в react, и я хочу создать веб-сайт, который мог бы отображать pdf.
Я загрузил средство просмотра PDF с помощью «npm install react-pdf» и на основе простого примера https://www.npmjs.com/package/react-pdf , я пишу следующий код.
(import stuff)
class pdfViewer extends Component {
pdfView = () => {
const [numPages, setNumPages] = useState(null);
const [pageNumber, setPageNumber] = useState(1);
return (
<div>
<Document
file={eggPdf}
onLoadSuccess={({ numPages }) => {
setNumPages(numPages);
}}
>
<Page pageNumber={pageNumber} />
</Document>
<p>Page {pageNumber} of {numPages}</p>
</div>
);
}
render(){
const pdfViwer = this.pdfView();
return(
<div>
{pdfViwer}
</div>
);
}
(export)
Отображается ошибка: Ошибка: недопустимый вызов перехвата. Перехваты могут вызываться только внутри тела функционального компонента. Это может произойти по одной из следующих причин: …
Как я должен это изменить?
Заранее благодарю вас!
Комментарии:
1. Перехваты предназначены для функциональных компонентов, а не для классов. Если вы хотите использовать перехваты, преобразуйте класс в функцию или используйте состояние вместо перехвата.
Ответ №1:
Вы должны использовать компоненты функции или класса. Если вы хотите использовать перехваты, вам необходимо использовать функциональные компоненты следующим образом:
(import stuff)
const PdfView = () => {
const [numPages, setNumPages] = useState(null);
const [pageNumber, setPageNumber] = useState(1);
return (
<div>
<Document
file={eggPdf}
onLoadSuccess={({ numPages }) => {
setNumPages(numPages);
}}
>
<Page pageNumber={pageNumber} />
</Document>
<p>Page {pageNumber} of {numPages}</p>
</div>
);
}
export default PdfView;
Теперь вы можете использовать этот компонент там, где хотите, в своем приложении.