Skip to main content

Tabs component

This component depends on react-native-pager-view, so you also need to install :

yarn add react-native-pager-view

Effect demonstration

1. Default effect

const routes = [
{ title: 'First', component: <LongList orderDate={orderDate} /> },
{ title: 'Second', component: <LongList orderDate={orderDate} /> },
{ title : ' Third ' , component : < LongList orderDate = { orderDate } /> },
];

return (
<Container>
<Tabs scenes={routes}/>
</Container>
);

2. Enter a range of keys

const routes = [
{ title : ' First ' , component : < LongList orderDate = { orderDate } /> },
{ title : ' Second ' , component : < LongList orderDate = { orderDate } /> },
{ title : ' Third ' , component : < LongList orderDate = { orderDate } /> },
];

return (
<Container>
<Tabs scenes={routes} tabStyle={{backgroundColor:'red'}}/>
</Container>
);

3. Ensure that there is a slightly less expensive solution

const routes = [
{ title: 'First', component: <LongList orderDate={orderDate} /> },
{ title: 'Second', component: <LongList orderDate={orderDate} /> },
{ title: 'Third', component: <LongList orderDate={orderDate} /> },
];

return (
<Container>
<Tabs scenes={routes} labelStyle={{color: 'red'}} />
</Container>
);

4. Custom indicator style

const routes = [
{ title: 'First', component: <LongList orderDate={orderDate} /> },
{ title: 'Second', component: <LongList orderDate={orderDate} /> },
{ title: 'Third', component: <LongList orderDate={orderDate} /> },
];

return (
<Container>
<Tabs scenes={routes} indicatorStyle={{color: 'red', height: 10, borderRadius: 5}} />
</Container>
);

5. Select the keyboard

const routes = [
{ title : ' First ' , component : < LongList orderDate = { orderDate } /> },
{ title : ' Second ' , component : < LongList orderDate = { orderDate } /> },
{ title : ' Third ' , component : < LongList orderDate = { orderDate } /> },
];

return (
<Container>
<Tabs scenes={routes} showIndicator={false} />
</Container>
);

6. Many tabs

const routes = [
{ title: 'First', component: <LongList orderDate={orderDate} /> },
{ title: 'Second', component: <LongList orderDate={orderDate} /> },
{ title: 'Third', component: <LongList orderDate={orderDate} /> },
{ title: 'Forth', component: <LongList orderDate={orderDate} /> },
{ title: 'Fifth', component: <LongList orderDate={orderDate} /> },
{ title: 'Sixth', component: <LongList orderDate={orderDate} /> },
{ title: 'Seventh', component: <LongList orderDate={orderDate} /> },
];

return (
<Container>
<Tabs scenes={routes} />
</Container>
);

7. Switch to second tab by default

const routes = [
{ title: 'First', component: <LongList orderDate={orderDate} /> },
{ title: 'Second', component: <LongList orderDate={orderDate} /> },
{ title: 'Third', component: <LongList orderDate={orderDate} /> },
];

return (
<Container>
<Tabs scenes={routes} initialPage={1} />
</Container>
);

API

PropertiesRequiredDescriptionTypeDefault Value
scenestruetab panel configurationTabScene[]
initialPagefalseWhich tab to switch to by defaultnumber0
heightfalsetab heightboolean48
scrollEnabledfalseEnable gesture control for left and right slidingbooleantrue
overdragfalseWhether to allow continued dragging after reaching the first or last pagebooleantrue
keyboardDismissModefalseTurn off keyboard modenone | on-dragon-drag
showIndicatorfalseWhether to display the indicatorbooleantrue
tabStylefalsetab styleViewStyle
tabItemStylefalseTab label styleViewStyle
labelStylefalseLabel text styleTextStyle
indicatorStylefalseindicator styleViewStyle

Typescript

interface TabScene {
title: ReactNode;
component: JSX.Element;
}