Fix TOC showing wrong headings across navigation
Problem: Table of Contents displayed headings from previously viewed articles when navigating between posts via client-side routing. Root cause: PostToc component's useEffect with empty dependency array only ran once on mount, so it retained stale heading data when React reused the component instance during navigation. Solution: Add contentKey prop flow: - Blog/page routes pass slug to PostLayout - PostLayout passes contentKey as key prop to PostToc instances - React remounts PostToc when key changes, rebuilding TOC correctly Files changed: - components/post-layout.tsx: Add contentKey prop and key forwarding - app/blog/[slug]/page.tsx: Pass slug as contentKey - app/pages/[slug]/page.tsx: Pass slug as contentKey
This commit is contained in:
@@ -79,7 +79,7 @@ export default async function BlogPostPage({ params }: Props) {
|
||||
return (
|
||||
<>
|
||||
<ReadingProgress />
|
||||
<PostLayout hasToc={hasToc}>
|
||||
<PostLayout hasToc={hasToc} contentKey={slug}>
|
||||
<div className="space-y-8">
|
||||
{/* Main content area for Pagefind indexing */}
|
||||
<div data-pagefind-body>
|
||||
|
||||
@@ -42,7 +42,7 @@ export default async function StaticPage({ params }: Props) {
|
||||
return (
|
||||
<>
|
||||
<ReadingProgress />
|
||||
<PostLayout hasToc={hasToc}>
|
||||
<PostLayout hasToc={hasToc} contentKey={slug}>
|
||||
<div className="space-y-8">
|
||||
<SectionDivider>
|
||||
<ScrollReveal>
|
||||
|
||||
Reference in New Issue
Block a user