Related Resources

Our Services

You May Also Like

A complete guide for React Table

Naveen Kumar Barre

Mar 13, 2023

6 min readLast Updated Mar 13, 2023

In this article, We will discuss what is React table and how to efficiently use the react-table library to create tables in our React application. We will learn how to implement some basic functionalities like sorting, filtering and searching etc.

What is React Table?

A React Table is one of the most widely used table libraries in React. It uses React Hooks both internally and externally for almost all of its configuration and lifecycle management. Naturally, this is what allows React Table to be headless and lightweight while still having a concise and simple API.

On 1 July 2022, Tanner announced the release of TanStack table, which offers a major upgrade from React Table v7.

TanStack Table v8 is designed to be more performant and feature-rich than v7, supporting additional web frameworks like Vue, Solid, and Svelte. Later in this article, we’ll see what a potential migration from React Table v7 might look like.

When to use React Tables

There are many scenarios where we can use react-table such as basic sorting, filtering, grouping, and searching etc. You should consider using react-table when you met the following conditions.

  • When out Table UI needs some basic features like sorting, filtering and pagination.
  • Custom UI design for the table without affecting functionality.
  • Easy extensibility, You can build your own features on top of React Table by using custom plugin Hooks.

React Table features

Let's get down to the react-table quick features.

  • It is lightweight, about 5kb - 14kb+.
  • It supports multiple features like sorting, filtering, pagination etc.
  • It works with hooks and its a collection of custom react hooks.
  • You can show and hide the columns.
  • It supports nested/grouped headers.
  • It has support for resizable table UI. It provides expandable rows to show complete data about the row.

Adding React Table to your app

For us to get started with react-table, we would have to install it in our react project directory using the command below:

💡
npm install react-table
# OR
yarn add react-table

Basic React Table

When using React tables, data and columns are the two significant pieces of information needed. The information we will pass into the rows is known as the data, and the objects used to define the table columns are called the columns (headers, rows, how we will show the row, etc.).

Get your data

We need to provide data to the react-table and here we are using useMemo hook in order to not to recreate the data instance on every render.

Define columns

Now we have some data, let's create columns definitions to pass into useTable hook.

Apply Table instance to markup

We have some data and columns that needs to be passed into table instance. Let's create table instace using useTable hook and apply it to HTML markup to make it live.

Now, once all of the above things are done, if we we put all of this together, we should get very basic table.

Implementing filtering the react table  with useGlobalFilter hook

This is another default function for React-table. To do this, we add useFilters and useGlobalFilter hooks to our code. The difference between these two hooks is that the first is responsible for filtering a specific column, while the global filter works on the entire table – any column and row.

Implementing Global Filtering

The useGlobalFilter allows us to filter the entire table based on any value passed into our filter text field. Let's start by passing in the useGlobalFilter hook as a second parameter where we initialized the useTable hook. And we will also add two methods to the previously destructured hooks and array methods. For implementing Global Filtering, we need to import useGlobalFilter and along with useTable hook.

In the input field, we set the value to globalFilter and the method to help set this value is setGlobalFilter(). With this, we have been able to implement global filtering successfully. For this, the code will look like the below.

Implementing Column Filtering

Now, let's look into column filtering in react-table. We can implement column filtering with the useFilters hook. Column filtering refers to having filter fields on each column capable of filtering the table based on each. These fields will be added directly to the table header, meaning we would need to edit the columns and markup. Let's start by creating the text field in a separate component which we would later add to all columns:

In the above code snippet, the form takes in a column prop which we can destructure to get the filterValue and setFilter values. These values would be used to control the forms input to help filter each column.

Let's import the useFilters hooks in our table component, and add it to the useTable hook instance:

Now, in our markup, we would add the filter field in our table header:

Implement sorting in react table with useSortBy hook

Sometimes when you create tables, you might want to add a sorting feature whereby when the user clicks the column header, the entire table sorts in ascending or descending order depending on the data type. You can implement sorting with the useSortBy hooks from react-table. As usual, you would need to add this hook to the useTable instance:

The next step would be to add a span tag alongside a condition to display whichever direction the table is sorted based on that column:

With this, we should have successfully able to do sorting on react-table.

Implement sorting in react table with usePagination hook

To use pagination in the table, we need usePagination hooks from react table. import the hook and add it to the useTable

Now, let's look into the markup as well. The below is the markup for the pagination.

After we make the change, our table will render only the first 10 elements from the data. So, it's time to implement the pagination buttons in the footer to navigate or fetch the next set of data. To implement navigation for the paginated table, react table provides four properties. They are,

  • nextPage
  • previousPage
  • canPreviousPage
  • canNextPage

nextPage is an action-based prop that we can use inside the onClick method. canNextPage returns a boolean to add a condition whether to render the next button or not. For example, if we reach the last page. We can disable the next button based on the canNextPage prop.

Not only filtering, sorting and pagination with react-table, we can do searching, grouping and many more. Checkout this Tanstack react table for more info.

Conclusion

In this article, we have learned what react table is and how and when to use react tables in our React project. Hope you enjoyed learning about table UIs. Let me know about your experience with tables in the comments.

Projects Completed till now.

Discover how we can help your business grow.

"Third Rock Techkno's work integrates complex frameworks and features to offer everything researchers need. They are open-minded and worked smoothly with the academic subject matter."

- Dr Daniel T. Michaels, NINS

Related Resources

You May Also Like

Our Services