diff --git a/src/components/PdfViewer/PdfViewer.hooks.ts b/src/components/PdfViewer/PdfViewer.hooks.ts index 4a88811..327f956 100644 --- a/src/components/PdfViewer/PdfViewer.hooks.ts +++ b/src/components/PdfViewer/PdfViewer.hooks.ts @@ -31,6 +31,7 @@ export const DEFAULT_CONFIG: PdfViewerConfig = { }; export const usePdfViewer = ( + file: string | File | ArrayBuffer | null, customConfig?: Partial, ): UsePdfViewerReturn => { const config = { @@ -39,6 +40,7 @@ export const usePdfViewer = ( }; const containerRef = useRef(null); const ref = useRef(null); + const [prevFile, setPrevFile] = useState(file); const [numPages, setNumPages] = useState(null); const [pageNumber, setPageNumber] = useState(config.initialPage); const [scale, setScale] = useState(config.initialScale ?? 1); @@ -46,6 +48,14 @@ export const usePdfViewer = ( const isScrollingTo = useRef(false); const scrollTimeoutRef = useRef>(); + if (file !== prevFile) { + setPrevFile(file); + setNumPages(null); + setPageNumber(config.initialPage); + setScale(config.initialScale ?? 1); + pdfPageWidthRef.current = null; + } + useEffect(() => () => clearTimeout(scrollTimeoutRef.current), []); const scrollToPage = useCallback((page: number) => { diff --git a/src/components/PdfViewer/PdfViewer.tsx b/src/components/PdfViewer/PdfViewer.tsx index ef2f740..0dca5f9 100644 --- a/src/components/PdfViewer/PdfViewer.tsx +++ b/src/components/PdfViewer/PdfViewer.tsx @@ -39,7 +39,7 @@ export const PdfViewer = ({ if (workerSrc && pdfjs.GlobalWorkerOptions.workerSrc !== workerSrc) { pdfjs.GlobalWorkerOptions.workerSrc = workerSrc; } - const viewer = usePdfViewer(restConfig); + const viewer = usePdfViewer(file, restConfig); return (
{(loading || viewer.state.numPages === null) && (