From 605bdc01cf0b8d71915065bdd650cbc9c6baf9e6 Mon Sep 17 00:00:00 2001 From: Thomas Cardonne Date: Tue, 15 Oct 2024 21:34:13 +0200 Subject: [PATCH] fix(techdocs): avoid rerender when clicking on anchor links in same page (#26938) Signed-off-by: Thomas Cardonne --- .changeset/mighty-spoons-suffer.md | 5 +++++ .../components/TechDocsReaderPageContent/dom.tsx | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 .changeset/mighty-spoons-suffer.md diff --git a/.changeset/mighty-spoons-suffer.md b/.changeset/mighty-spoons-suffer.md new file mode 100644 index 0000000000..5b03378568 --- /dev/null +++ b/.changeset/mighty-spoons-suffer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Avoid page re-rendering when clicking on anchor links in the same documentation page. diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx index 28090cb62c..141f869ecf 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx @@ -208,7 +208,18 @@ export const useTechDocsReaderDom = ( if (modifierActive) { window.open(url, '_blank'); } else { - navigate(url); + // If it's in a different page, we navigate to it + if (window.location.pathname !== parsedUrl.pathname) { + navigate(url); + } else { + // If it's in the same page we avoid using navigate that causes + // the page to rerender. + window.history.pushState( + null, + document.title, + parsedUrl.hash, + ); + } // Scroll to hash if it's on the current page transformedElement ?.querySelector(`[id="${parsedUrl.hash.slice(1)}"]`)