React-Bootstrap-Table-Next, often referred to as RBTN, is an incredibly powerful tool that lets developers bring to life feature-rich tables in React applications. With a streamlined design and flexible features, it takes away the inherent complexity involved in building, managing, and enhancing data tables in React.
Getting Started: Installation and Basic Usage
Installing React-Bootstrap-Table-Next is as simple as running an npm command:
npm install react-bootstrap-table-next [email protected] --save
Once installed, React-Bootstrap-Table-Next can be imported into a React component as follows:
import BootstrapTable from 'react-bootstrap-table-next';
import cellEditFactory from 'react-bootstrap-table2-editor';
The first line imports the BootstrapTable component, while the second one imports the cell editing functionality, which we will explore in detail later.
To set up a basic table using React-Bootstrap-Table-Next, we need a data source and a columns array:
const products = [{id: 1, name: 'Product1'}, {id: 2, name: 'Product2'}]; const columns = [{ const products = [{id: 1, name: 'Product1'}, {id: 2, name: 'Product2'}];
const columns = [{
dataField: 'id',
text: 'Product ID'
}, {
dataField: 'name',
text: 'Product Name'
}];
<BootstrapTable keyField='id' data={products} columns={columns} />
In this example, products serves as our data source, and columns outlines the structure of our table. keyField is used to indicate the primary key of the data set.
Unlocking Advanced Functionalities
Pagination
Paginating your data with RBTN is simple. First, import the paginationFactory:
import paginationFactory from 'react-bootstrap-table2-paginator';
Next, add the pagination prop to your BootstrapTable component:
<BootstrapTable
keyField='id'
data={products}
columns={columns}
pagination={paginationFactory()}
/>
Cell Editing
The cell editing feature lets users modify data directly within the table. Enable this by using the cellEditFactory:
<BootstrapTable
keyField='id'
data={products}
columns={columns}
cellEdit={cellEditFactory({ mode: 'click', blurToSave: true })}
/>
This piece of code sets up click-to-edit mode, with changes saved when the user clicks outside the cell (blurToSave).
Sorting
To sort your data, add the sort prop to your table:
import {sort} from 'react-bootstrap-table2-sort';
...
<BootstrapTable
keyField='id'
data={products}
columns={columns}
sort={sort()}
/>
This way, the table’s columns become clickable, enabling users to sort data in ascending or descending order.
Searching
RBTN makes it possible to add a search field to your table using the Search component:
import { Search } from 'react-bootstrap-table2-toolkit';
...
<Search.SearchBar { ...props.searchProps } />
<BootstrapTable
{ ...props.baseProps }
/>
The search field filters the table’s content in real-time as the user types into it.
Deeper Dive into Features
Now that we’ve covered the basics and some advanced functionalities, let’s dive deeper into some of these features.
Pagination
The paginationFactory() function takes an options object that allows you to customize the pagination behaviour. For example:
pagination={paginationFactory({
page: 2, // specify the current page. Default is 1
sizePerPage: 10, // specify the number of rows per page. Default is 10
totalSize: products.length, // total data size
paginationSize: 5, // maximum number of page buttons to display
paginationTotalRenderer: customTotal, // custom total number renderer
sizePerPageList: [5, 10, 25, 50] // options for page size dropdown
})}
Cell Editing
cellEditFactory() provides numerous options to control cell editing behaviour, like specifying the trigger for editing (‘click’, ‘dbclick’, or ‘none’), auto-selecting text on edit, and providing custom validation. A callback function after SaveCell can be used to take actions after saving a cell:
cellEdit={cellEditFactory({
mode: 'click',
blurToSave: true,
autoSelectText: true,
validator: (newValue, oldValue, row, column) => {
if (isNaN(newValue)) {
return 'Value must be a number';
}
return true;
},
afterSaveCell: (oldValue, newValue, row, column) => {
console.log(`Saved cell with column: ${column.dataField} with new value: ${newValue}`);
}
})}
Sorting
RBTN supports single and multi-column sorting. You can customize the sort indicator and default sorting column and order. It also supports custom sorting functions:
columns = [{
dataField: 'id',
text: 'Product ID',
sort: true,
sortFunc: (a, b, order, dataField, rowA, rowB) => {
if (order === 'asc') {
return b - a;
}
return a - b; // desc
}
}];
Conclusion
React-Bootstrap-Table-Next is an extremely flexible and feature-packed library that greatly simplifies handling tables in React applications. Its versatility in managing large datasets and offering complex features like sorting, searching, pagination, and cell editing make it a standout choice for developers. By understanding and leveraging its capabilities, developers can create data-driven applications that provide an excellent user experience.
FAQS
RBTN provides numerous event handlers, including onClick, onDoubleClick, onMouseEnter, onMouseLeave, etc., for rows and cells. For columns, event handlers like onSort are provided.
Yes, you can provide custom classes and styles for the table, rows, and cells using the classes and style attributes.
RBTN supports single and multi-row selection. You can control the selection with checkboxes or click events.
Yes, RBTN supports exporting table data in CSV format.
You can add any kind of custom column by providing a custom data formatter in the columns array.