diff --git a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx index 0a937683a5..a97fc70e4b 100644 --- a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx +++ b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.tsx @@ -20,7 +20,7 @@ import { makeStyles } from '@material-ui/core/styles'; import TabUI, { TabProps } from '@material-ui/core/Tab'; import Tabs from '@material-ui/core/Tabs'; -import React, { useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; /** @public */ export type HeaderTabsClassKey = @@ -80,12 +80,15 @@ export function HeaderTabs(props: HeaderTabsProps) { const [selectedTab, setSelectedTab] = useState(selectedIndex ?? 0); const styles = useStyles(); - const handleChange = (_: React.ChangeEvent<{}>, index: number) => { - if (selectedIndex === undefined) { - setSelectedTab(index); - } - if (onChange) onChange(index); - }; + const handleChange = useCallback( + (_: React.ChangeEvent<{}>, index: number) => { + if (selectedIndex === undefined) { + setSelectedTab(index); + } + if (onChange && selectedIndex !== index) onChange(index); + }, + [selectedIndex, onChange], + ); useEffect(() => { if (selectedIndex !== undefined) {