React Table
Demo: https://trendmicro-frontend.github.io/react-table
[Friendly reminder] Please migrate to 2+ asap.
- Install the latest version of react and react-table:
npm install --save react @trendmicro/react-table @trendmicro/react-paginations
- At this point you can import
@trendmicro/react-table
and its styles in your application as follows:
import TableTemplate, { TableWrapper, TableHeader, TableBody, TableRow, TableCell, TableHeaderCell } from '@trendmicro/react-table';
<TableTemplate
hoverable
useFixedHeader
columns={columns}
data={data}
width={500}
/>
<TableWrapper
columns={columns}
data={data}
width={800}
height={320}
>
{({ cells, data, loader, emptyBody, tableWidth }) => {
return (
<Fragment>
<TableHeader>
<TableRow>
{
cells.map((cell, index) => {
const key = `table_header_cell_${index}`;
const {
title,
width: cellWidth,
} = cell;
return (
<TableHeaderCell
key={key}
width={cellWidth}
>
{ title }
</TableHeaderCell>
);
})
}
</TableRow>
</TableHeader>
<TableBody>
<Scrollbars
style={{
width: tableWidth
}}
>
{
data.map((row, index) => {
const rowKey = `table_row${index}`;
return (
<TableRow key={rowKey}>
{
cells.map((cell, index) => {
const key = `${rowKey}_cell${index}`;
const cellValue = _get(row, cell.dataKey);
return (
<TableCell
key={key}
width={cell.width}
>
{ typeof cell.render === 'function' ? cell.render(cellValue, row, index) : cellValue }
</TableCell>
);
})
}
</TableRow>
);
})
}
</Scrollbars>
</TableBody>
</Fragment>
);
}}
</TableWrapper>
Name | Type | Default | Description |
---|---|---|---|
minimalist | Boolean | false | Specify whether the table should not be bordered. |
columns | Object[] | [] | The columns config of table, see Column below for details. |
data | Object[] | [] | Data record array to be rendered. |
emptyRender | Function | () => { return 'No Data'; } | Empty content render function. |
emptyText | String | 'No Data' | The text when data is null. |
height | Number | The height of the table. | |
loading | Boolean | false | Whether table is loading. |
loaderRender | Function | Loading content render function. | |
width | Number(required) | The width of the table. |
Name | Type | Default | Description |
---|---|---|---|
width | Number(required) | The width of the table. |
Name | Type | Default | Description |
---|---|---|---|
width | Number(required) | The width of the table. |
Name | Type | Default | Description |
---|---|---|---|
minimalist | Boolean | false | Specify whether the table should not be bordered. |
columns | Object[] | [] | The columns config of table, see Column below for details. |
data | Object[] | [] | Data record array to be rendered. |
emptyRender | Function | () => { return 'No Data'; } | Empty content render function. |
emptyText | String | 'No Data' | The text when data is null. |
height | Number | The height of the table. | |
hideHeader | Boolean | false | Whether table head is hiden. |
hoverable | Boolean | false | Whether use row hover style. |
loading | Boolean | false | Whether table is loading. |
loaderRender | Function | Loading content render function. | |
useFixedHeader | Boolean | false | Whether table head is fixed. |
width | Number(required) | The width of the table. |
Name | Type | Default | Description |
---|---|---|---|
title | React Node or Function(): React Node | Title of this column. | |
dataKey | String | Display field of the data record. | |
width | String or Number | 150 | Width of the specific proportion calculation according to the width of the columns. |
render | Function(value, record, rowIndex) | The render function of cell, has two params: the text of this cell, the record of this row, it's return a react node. |
MIT