The package is both Android and iOS compatible.
Have a look at the examples below! :-)
- Install as dependency:
// yarn
yarn add react-native-table-optimize
// or npm
npm i react-native-table-optimize
- Add needed components:
import { TableWrap, TableHead, TableBody, TableRow } from 'react-native-table-optimize';
Prop | Default | Type | Description |
---|---|---|---|
children | - | React.ReactNode |
Children. Should be of type Section |
width | 100% |
string |
Length of percentage table with screen size |
scrollHorizontal | false | bool |
Allow horizontal dragging of the table if the length of the board exceeds 100% |
Prop | Default | Type | Description |
---|---|---|---|
titleTextStyle | - | Text.propTypes.style |
These styles will be applied to the title text table. |
itemStyle | - | View.propTypes.style |
These styles will be applied to the box (row - col) in table. |
dataTitleHead | - | array |
An array of text corresponding to each column heading |
dataSpacing | - | array |
A text array of percentage distances for each column |
Prop | Default | Type | Description |
---|---|---|---|
children | - | React.ReactNode |
Children. Should contains the rows of the table |
isScroll | false | bool |
Allow scrolling up and down and fix the table title |
bodyHeight | 300 | number |
Table content height |
bodyStyle | _ | View.propTypes.style |
These styles will be applied to the content of table |
onRefreshTable | _ | func |
Listen to refresh table event |
Prop | Default | Type | Description |
---|---|---|---|
width | 100% |
React.ReactNode |
Length of percentage table with screen size |
textStyle | _ | Text.propTypes.style |
These styles will be applied to the row text table. |
itemStyle | _ | View.propTypes.style |
These styles will be applied to the item row table. |
dataRow | _ | array |
An array of text corresponding to each column row |
dataSpacing | _ | array |
A text array of percentage distances for each row |
onHandleItemRow | _ | func |
Listen to onPress event of item |
import { TableWrap, TableHead, TableBody, TableRow } from 'react-native-table-optimize';
export default function App() {
return (
<ScrollView>
<Text style={{textAlign: 'center', paddingVertical: 30, marginTop: 30, fontWeight: '700', fontSize: 20}}>Table Native Table Optimize</Text>
<TableWrap width='125%' scrollHorizontal={true}>
<TableHead
dataSpacing={dataSpacing}
dataTitleHead={dataTitleTHead}
itemStyle={{
backgroundColor: THEME.PRIMARY_COLOR_LIGHT,
padding: 10,
borderWidth: 1,
borderColor: THEME.PRIMARY_COLOR_DARK,
}}
titleTextStyle={{
textAlign: 'center',
color: THEME.BLACK_COLOR,
fontWeight: '700'
}}
/>
<TableBody
isScroll={true}
bodyHeight={465}
onRefreshTable={() => {
Alert.alert('On RefreshDataTable')
}}
>
{
dataRow.map((item, idx) => {
let itemRow = [
item.content1,
item.content2,
item.content3,
item.content4,
item.content5,
]
return (
<TableRow
key={idx}
width='100%'
dataSpacing={dataSpacing}
dataRow={itemRow}
textStyle={{
textAlign: 'center',
color: THEME.BLACK_COLOR
}}
itemStyle={{
backgroundColor: THEME.WHITE_COLOR,
padding: 10,
borderWidth: 1,
borderColor: THEME.PRIMARY_COLOR_LIGHT,
}}
onHandleItemRow={() => Alert.alert('On Touch Row')}
/>
)
})
}
</TableBody>
</TableWrap>
</ScrollView>
);
}