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;
}