chore: Ignore linting error due to useLayoutEffect

This commit is contained in:
Dries Augustyns
2025-12-20 11:18:46 +01:00
parent 4156cd436d
commit 070fd812b2
@@ -1,6 +1,6 @@
import {Footer, Navbar} from '../'; import {Footer, Navbar} from '../';
import {motion} from 'framer-motion'; import {motion} from 'framer-motion';
import React, {ReactNode, useEffect, useState} from 'react'; import React, {ReactNode, useLayoutEffect, useState} from 'react';
import Link from 'next/link'; import Link from 'next/link';
import {ArticleJsonLd, BreadcrumbJsonLd, NextSeo} from 'next-seo'; import {ArticleJsonLd, BreadcrumbJsonLd, NextSeo} from 'next-seo';
import {Calendar, Clock} from 'lucide-react'; import {Calendar, Clock} from 'lucide-react';
@@ -31,7 +31,7 @@ export function GuideLayout({
const [activeId, setActiveId] = useState<string>(''); const [activeId, setActiveId] = useState<string>('');
// Extract headings for table of contents // Extract headings for table of contents
useEffect(() => { useLayoutEffect(() => {
const elements = Array.from(document.querySelectorAll('h2, h3')); const elements = Array.from(document.querySelectorAll('h2, h3'));
// Generate IDs for headings that don't have them // Generate IDs for headings that don't have them
@@ -51,6 +51,8 @@ export function GuideLayout({
level: parseInt(element.tagName.substring(1)), level: parseInt(element.tagName.substring(1)),
}; };
}); });
// eslint-disable-next-line react-hooks/set-state-in-effect
setHeadings(headingData); setHeadings(headingData);
// Set up intersection observer for active heading // Set up intersection observer for active heading
@@ -68,7 +70,7 @@ export function GuideLayout({
elements.forEach(element => observer.observe(element)); elements.forEach(element => observer.observe(element));
return () => observer.disconnect(); return () => observer.disconnect();
}, [children]); }, []);
// Generate breadcrumb items // Generate breadcrumb items
const breadcrumbItems = [ const breadcrumbItems = [
@@ -172,9 +174,7 @@ export function GuideLayout({
{headings.length > 0 && ( {headings.length > 0 && (
<aside className={'hidden lg:block w-64 shrink-0 sticky top-24 self-start'}> <aside className={'hidden lg:block w-64 shrink-0 sticky top-24 self-start'}>
<div className={'rounded-xl border border-neutral-200 bg-white p-6 shadow-sm'}> <div className={'rounded-xl border border-neutral-200 bg-white p-6 shadow-sm'}>
<h2 className={'text-sm font-semibold text-neutral-900 mb-4 uppercase tracking-wide'}> <h2 className={'text-sm font-semibold text-neutral-900 mb-4 uppercase tracking-wide'}>On this page</h2>
On this page
</h2>
<nav> <nav>
<ul className={'space-y-1'}> <ul className={'space-y-1'}>
{headings.map(heading => ( {headings.map(heading => (