Skip to content

Commit c8ba1d0

Browse files
committed
fix: more adjustments to avoid infinite re-renders
1 parent e094eb0 commit c8ba1d0

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

site/src/components/Spinner/Spinner.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ type SpinnerProps = Readonly<
3737
* be used with care and only if it prevents render performance
3838
* issues.
3939
*/
40-
unmountedWhileLoading?: boolean;
40+
unmountChildrenWhileLoading?: boolean;
4141

4242
/**
4343
* Specifies whether there should be a delay before the spinner
@@ -54,7 +54,7 @@ type SpinnerProps = Readonly<
5454
* it in case the modal can close quickly enough. It's lying to the
5555
* user in a way that makes the UI feel more polished.)
5656
*/
57-
spinnerStartDelayMs?: number;
57+
spinnerDelayMs?: number;
5858
}
5959
>;
6060

@@ -72,14 +72,14 @@ export const Spinner: FC<SpinnerProps> = ({
7272
size,
7373
loading,
7474
children,
75-
spinnerStartDelayMs = 0,
76-
unmountedWhileLoading = false,
75+
spinnerDelayMs = 0,
76+
unmountChildrenWhileLoading = false,
7777
...delegatedProps
7878
}) => {
7979
// Disallow negative timeout values and fractional values, but also round
8080
// the delay down if it's small enough that it might as well be immediate
8181
// from a user perspective
82-
let safeDelay = Math.trunc(spinnerStartDelayMs);
82+
let safeDelay = Math.trunc(spinnerDelayMs);
8383
if (safeDelay < 100) {
8484
safeDelay = 0;
8585
}
@@ -95,7 +95,9 @@ export const Spinner: FC<SpinnerProps> = ({
9595
if (delayLapsed && !loading) {
9696
setDelayLapsed(false);
9797
}
98-
if (!delayLapsed && safeDelay === 0 && cachedDelay !== safeDelay) {
98+
const delayWasRemovedOnRerender =
99+
!delayLapsed && safeDelay === 0 && cachedDelay !== safeDelay;
100+
if (delayWasRemovedOnRerender) {
99101
setDelayLapsed(true);
100102
setCachedDelay(safeDelay);
101103
}
@@ -148,7 +150,7 @@ export const Spinner: FC<SpinnerProps> = ({
148150
))}
149151
</svg>
150152

151-
{!unmountedWhileLoading && (
153+
{!unmountChildrenWhileLoading && (
152154
<div className="sr-only">
153155
This content is loading:
154156
{children}

0 commit comments

Comments
 (0)