Skip to content

Commit 7b85150

Browse files
fix: improve make onChangeIndex not required
1 parent 350d428 commit 7b85150

File tree

3 files changed

+10
-12
lines changed

3 files changed

+10
-12
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ function Example() {
7373
return (
7474
<TabsProvider
7575
defaultIndex={0}
76-
onChangeIndex={handleChangeIndex}
76+
// onChangeIndex={handleChangeIndex} optional
7777
>
7878
<Tabs
79-
// uppercase={false} // true/false | default=true | labels are uppercase
79+
// uppercase={false} // true/false | default=true (on material v2) | labels are uppercase
8080
// showTextLabel={false} // true/false | default=false (KEEP PROVIDING LABEL WE USE IT AS KEY INTERNALLY + SCREEN READERS)
8181
// iconPosition // leading, top | default=leading
8282
// style={{ backgroundColor:'#fff' }} // works the same as AppBar in react-native-paper

src/TabsProvider.tsx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,21 @@ import React, { useState } from 'react';
22
import { TabsContext } from './context';
33
import type { TabsProviderProps } from './utils';
44

5-
export const TabsProvider = ({
5+
export function TabsProvider({
66
children,
77
onChangeIndex,
88
defaultIndex,
9-
}: TabsProviderProps): JSX.Element => {
9+
}: TabsProviderProps) {
1010
const [index, setIndex] = useState<number>(defaultIndex || 0);
1111
const goTo = React.useCallback(
1212
(ind: number) => {
1313
setIndex(ind);
14-
onChangeIndex(ind);
14+
onChangeIndex?.(ind);
1515
},
1616
[setIndex, onChangeIndex]
1717
);
1818

19-
return (
20-
<TabsContext.Provider value={{ goTo, index }}>
21-
{children}
22-
</TabsContext.Provider>
23-
);
24-
};
19+
const value = React.useMemo(() => ({ goTo, index }), [goTo, index]);
20+
21+
return <TabsContext.Provider value={value}>{children}</TabsContext.Provider>;
22+
}

src/utils.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,6 @@ export type IndicatorReturns = [RefObject<View> | undefined, () => any, Animated
7171

7272
export interface TabsProviderProps {
7373
children: any;
74-
onChangeIndex: (index: number) => void;
74+
onChangeIndex?: (index: number) => void;
7575
defaultIndex?: number;
7676
}

0 commit comments

Comments
 (0)