Skip to content

Commit 8228e4e

Browse files
authored
fix: Tabs infinite loop (#7487)
* fix: Tabs infinite loop if a collection is provided inside the tab panel * remove console logs
1 parent a89b7c8 commit 8228e4e

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

packages/@react-spectrum/s2/src/Tabs.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,8 +543,13 @@ function CollapsingCollection({children, containerRef}) {
543543
_setShowItems(value);
544544
}
545545
}, [orientation]);
546+
let ctx = useMemo(() => ({
547+
containerRef,
548+
showItems: orientation === 'vertical' ? true : showItems,
549+
setShowItems
550+
}), [containerRef, showItems, setShowItems]);
546551
return (
547-
<CollapseContext.Provider value={{containerRef, showItems: orientation === 'vertical' ? true : showItems, setShowItems}}>
552+
<CollapseContext.Provider value={ctx}>
548553
<UNSTABLE_CollectionRendererContext.Provider value={CollapsingCollectionRenderer}>
549554
{children}
550555
</UNSTABLE_CollectionRendererContext.Provider>

packages/react-aria-components/src/Tabs.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import {AriaLabelingProps, forwardRefType, HoverEvents, Key, LinkDOMProps, RefObject} from '@react-types/shared';
1414
import {AriaTabListProps, AriaTabPanelProps, mergeProps, Orientation, useFocusRing, useHover, useTab, useTabList, useTabPanel} from 'react-aria';
1515
import {Collection, CollectionBuilder, createHideableComponent, createLeafComponent} from '@react-aria/collections';
16-
import {CollectionProps, CollectionRendererContext, usePersistedKeys} from './Collection';
16+
import {CollectionProps, CollectionRendererContext, DefaultCollectionRenderer, usePersistedKeys} from './Collection';
1717
import {ContextValue, Provider, RenderProps, SlotProps, StyleRenderProps, useContextProps, useRenderProps, useSlottedContext} from './utils';
1818
import {filterDOMProps, useObjectRef} from '@react-aria/utils';
1919
import {Collection as ICollection, Node, TabListState, useTabListState} from 'react-stately';
@@ -330,7 +330,9 @@ export const TabPanel = /*#__PURE__*/ createHideableComponent(function TabPanel(
330330
[TabsContext, null],
331331
[TabListStateContext, null]
332332
]}>
333-
{renderProps.children}
333+
<CollectionRendererContext.Provider value={DefaultCollectionRenderer}>
334+
{renderProps.children}
335+
</CollectionRendererContext.Provider>
334336
</Provider>
335337
</div>
336338
);

0 commit comments

Comments
 (0)