Skip to content

Commit b4591d6

Browse files
authored
💎 style(fixed ui): delayed component rendering (#85)
1 parent 0b11381 commit b4591d6

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/frontend/_layouts/app/IsSignedIn.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { ReactNode } from "react";
22
import { useEffect } from "react";
33

4+
import { Delayed } from "@/components/app/delay-rendering";
45
import { ComponentIsLoading } from "@/components/app/loading-component";
56
import { AuthActions } from "@/frontend/hooks/auth/auth.actions";
67
import { useToggle } from "@/frontend/hooks/state/useToggleState";
@@ -21,7 +22,11 @@ export function IsSignedIn({ children }: { children: ReactNode }) {
2122
}, [isClient]);
2223

2324
if (renderMode.isOff) {
24-
return <ComponentIsLoading fullPage />;
25+
return (
26+
<Delayed delayWait={0}>
27+
<ComponentIsLoading fullPage />
28+
</Delayed>
29+
);
2530
}
2631
// eslint-disable-next-line react/jsx-no-useless-fragment
2732
return <>{children}</>;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React from "react";
2+
3+
type delayedProps = {
4+
delayWait: number;
5+
children: React.ReactNode;
6+
};
7+
8+
export function Delayed({ delayWait = 500, children }: delayedProps) {
9+
const [delayed, setDelayed] = React.useState(true);
10+
11+
React.useEffect(() => {
12+
const timer = setTimeout(() => setDelayed(false), delayWait);
13+
return () => {
14+
clearTimeout(timer);
15+
};
16+
}, [delayWait]);
17+
18+
return !delayed && <div>{children}</div>;
19+
}

0 commit comments

Comments
 (0)