Skip to content

Commit 59d709c

Browse files
authored
Merge pull request #446 from codegouvfr/fix/tabs-component-with-async-tabs
Fix - Tabs component
2 parents 2b47dcf + ae2e642 commit 59d709c

File tree

1 file changed

+3
-20
lines changed

1 file changed

+3
-20
lines changed

src/Tabs.tsx

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
"use client";
22

3-
import React, {
4-
memo,
5-
forwardRef,
6-
useId,
7-
useState,
8-
useEffect,
9-
type ReactNode,
10-
type CSSProperties
11-
} from "react";
3+
import React, { memo, forwardRef, useId, type ReactNode, type CSSProperties, useMemo } from "react";
124
import type { FrIconClassName, RiIconClassName } from "./fr/generatedFromCss/classNames";
135
import { symToStr } from "tsafe/symToStr";
146
import { fr } from "./fr";
@@ -78,24 +70,15 @@ export const Tabs = memo(
7870
"explicitlyProvidedId": id_props
7971
});
8072

81-
const getSelectedTabIndex = () => {
73+
const selectedTabIndex = useMemo(() => {
8274
const index = tabs.findIndex(tab =>
8375
"content" in tab ? tab.isDefault ?? false : tab.tabId === selectedTabId
8476
);
8577
return index === -1 ? 0 : index;
86-
};
78+
}, [tabs, selectedTabId]);
8779

8880
const buttonRefs = React.useRef<Array<HTMLButtonElement | null>>([]);
8981

90-
const [selectedTabIndex, setSelectedTabIndex] = useState<number>(getSelectedTabIndex);
91-
92-
useEffect(() => {
93-
if (selectedTabId === undefined) {
94-
return;
95-
}
96-
setSelectedTabIndex(getSelectedTabIndex());
97-
}, [selectedTabId]);
98-
9982
const onTabClickFactory = useCallbackFactory(([tabIndex]: [number]) => {
10083
if (selectedTabId === undefined) {
10184
onTabChange?.({

0 commit comments

Comments
 (0)