Skip to content

Commit 51561ec

Browse files
authored
fix: sync state updates (#447)
1 parent 3f425da commit 51561ec

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

  • src/webui/designsystem/components/tabs

src/webui/designsystem/components/tabs/Tabs.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
import type { ReactElement, ReactNode } from 'react';
3-
import { useEffect, useMemo, useState } from 'react';
3+
import { useEffect, useEffectEvent, useMemo, useState } from 'react';
44

55
import type { Props as TabProps } from './Tab';
66
import './Tabs.css';
@@ -33,16 +33,18 @@ export default function Component({ separator, selectedId, children, onChange }:
3333
});
3434

3535
return tabs;
36-
3736
}, [tabList]);
3837

39-
useEffect(() =>
38+
const updateSelected = useEffectEvent((selectedId?: string) =>
4039
{
41-
const firstTabId = tabList[0].props.id;
40+
const firstTabId = tabList[0]?.props.id;
4241

43-
// eslint-disable-next-line react-hooks/set-state-in-effect
4442
setSelected(selectedId ?? firstTabId);
43+
});
4544

45+
useEffect(() =>
46+
{
47+
updateSelected(selectedId);
4648
}, [selectedId, tabList]);
4749

4850
const handleChange = (tabId: string) =>

0 commit comments

Comments
 (0)