Răsfoiți Sursa

Redo useEffect

satof3 1 lună în urmă
părinte
comite
2828186572
1 a modificat fișierele cu 18 adăugiri și 8 ștergeri
  1. 18 8
      apps/app/src/client/components/PageHeader/PageHeader.tsx

+ 18 - 8
apps/app/src/client/components/PageHeader/PageHeader.tsx

@@ -1,4 +1,4 @@
-import { type JSX, useRef } from 'react';
+import { type JSX, useEffect, useRef, useState } from 'react';
 
 
 import { useCurrentPageData } from '~/states/page';
 import { useCurrentPageData } from '~/states/page';
 import { useDeviceLargerThanSm } from '~/states/ui/device';
 import { useDeviceLargerThanSm } from '~/states/ui/device';
@@ -17,17 +17,27 @@ export const PageHeader = (): JSX.Element => {
   const [isLargerThanSm] = useDeviceLargerThanSm();
   const [isLargerThanSm] = useDeviceLargerThanSm();
   const pageHeaderRef = useRef<HTMLDivElement>(null);
   const pageHeaderRef = useRef<HTMLDivElement>(null);
 
 
+  const [maxWidth, setMaxWidth] = useState<number>(300);
+
+  useEffect(() => {
+    if (pageHeaderRef.current == null) {
+      return;
+    }
+
+    const pageHeaderX = pageHeaderRef.current.getBoundingClientRect().x;
+    setMaxWidth(
+      !isLargerThanSm
+        ? window.innerWidth - pageHeaderX
+        : pageControlsX != null
+          ? pageControlsX - pageHeaderX
+          : 300,
+    );
+  }, [isLargerThanSm, pageControlsX]);
+
   if (currentPage == null) {
   if (currentPage == null) {
     return <></>;
     return <></>;
   }
   }
 
 
-  const pageHeaderX = pageHeaderRef.current?.getBoundingClientRect().x ?? 0;
-  const maxWidth = !isLargerThanSm
-    ? window.innerWidth - pageHeaderX
-    : pageControlsX != null
-      ? pageControlsX - pageHeaderX
-      : 300;
-
   return (
   return (
     <div className={`${moduleClass} w-100`} ref={pageHeaderRef}>
     <div className={`${moduleClass} w-100`} ref={pageHeaderRef}>
       <PagePathHeader currentPage={currentPage} maxWidth={maxWidth} />
       <PagePathHeader currentPage={currentPage} maxWidth={maxWidth} />