diff --git a/package.json b/package.json index bbf0b88a..46e3bfae 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "trailingComma": "es5" }, "devDependencies": { + "eslint": "^8.33.0", "prettier": "3.2.2", "turbo": "1.11.3", "typescript": "5.3.3" diff --git a/packages/react-pdf-js/src/index.tsx b/packages/react-pdf-js/src/index.tsx index 8fdf0104..7c39c2dd 100644 --- a/packages/react-pdf-js/src/index.tsx +++ b/packages/react-pdf-js/src/index.tsx @@ -52,6 +52,7 @@ export const usePdf = ({ const [pdfDocument, setPdfDocument] = useState(); const [pdfPage, setPdfPage] = useState(); const renderTask = useRef(null); + const lastPageRequestedRenderRef = useRef(null); const onDocumentLoadSuccessRef = useRef(onDocumentLoadSuccess); const onDocumentLoadFailRef = useRef(onDocumentLoadFail); const onPageLoadSuccessRef = useRef(onPageLoadSuccess); @@ -135,6 +136,7 @@ export const usePdf = ({ // if previous render isn't done yet, we cancel it if (renderTask.current) { + lastPageRequestedRenderRef.current = page; renderTask.current.cancel(); return; } @@ -156,7 +158,9 @@ export const usePdf = ({ renderTask.current = null; if (reason && reason.name === 'RenderingCancelledException') { - drawPDF(page); + const lastPageRequestedRender = lastPageRequestedRenderRef.current ?? page; + lastPageRequestedRenderRef.current = null; + drawPDF(lastPageRequestedRender); } else if (isFunction(onPageRenderFailRef.current)) { onPageRenderFailRef.current(); }