Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

How to display checkbox in ReactJS pagination

Getting Started with React Pagination

ReactJS, a popular JavaScript library, makes it simple to create interactive web applications. To display large amounts of data, developers often use pagination, a technique that breaks data into discrete pages. This blog post will teach you how to create a paginated data table in ReactJS with selectable checkboxes.

What is Pagination?

Imagine a book with thousands of pages but without any page numbers or chapter divisions. It would be tough to find specific information, right? Pagination is like the page numbers in a book. It helps us to organize large amounts of data into manageable chunks.

Getting Started with the Pagination Component

First, we need to create a component for pagination. We will use a functional component, a simple function that takes props and returns what the UI should look like. Here's an example:

function Pagination({ data, RenderComponent, pageLimit, dataLimit }) {
  return (
    // JSX code here
  );
}

Here, data is the list of all data, RenderComponent is the component used for rendering the data, pageLimit is the number of pages you want to see at once, and dataLimit is the number of data you want to display per page.

Creating the Checkbox Component

We'll create checkboxes to each item in our data table. This will allow users to select multiple items at once. Let's start by creating a new Checkbox component:

function Checkbox({ label, isSelected, onCheckboxChange }) {
  return (
    <div>
      <label>
        <input
          type="checkbox"
          name={label}
          checked={isSelected}
          onChange={onCheckboxChange}
          className="checkbox"
        />
        {label}
      </label>
    </div>
  );
}

Here, label is the text we'll display next to each checkbox, isSelected is a boolean indicating whether the checkbox is currently selected, and onCheckboxChange is a function that will be called whenever the checkbox is clicked.

Integrating the Checkbox with Pagination

Now, we need to integrate our Checkbox component with our Pagination component. We'll add a new state variable in the Pagination component to keep track of which checkboxes are selected.

import React, { useState } from 'react';
import Checkbox from './Checkbox';

function Pagination({ data, RenderComponent, pageLimit, dataLimit }) {
  const [selected, setSelected] = useState([]);

  const handleCheckboxChange = (index) => {
    if (selected.includes(index)) {
      setSelected(selected.filter((i) => i !== index));
    } else {
      setSelected([...selected, index]);
    }
  };

  return (
    <div>
      {data.map((item, index) => (
        <div key={index}>
          <Checkbox
            label={item.name}
            isSelected={selected.includes(index)}
            onCheckboxChange={() => handleCheckboxChange(index)}
          />
          <RenderComponent {...item} />
        </div>
      ))}
    </div>
  );
}

The Final Touch

The final step is to add the pagination functionality. We'll add buttons for navigation and logic to display the correct data on each page.

// ... rest of the component

// create an array of page numbers
const pages = Array.from(Array(Math.ceil(data.length / dataLimit)).keys());

return (
  <div>
    {data
      .slice(page * dataLimit, (page + 1) * dataLimit)
      .map((item, index) => (
        <div key={index}>
          <Checkbox
            label={item.name}
            isSelected={selected.includes(index)}
            onCheckboxChange={() => handleCheckboxChange(index)}
          />
          <RenderComponent {...item} />
        </div>
      ))}
    {pages.map((number, index) => (
      <button key={index} onClick={() => setPage(number)}>
        {number + 1}
      </button>
    ))}
  </div>
);

Conclusion

Creating a paginated data table with checkboxes in ReactJS might seem like a complex task. But when you break it down into smaller components and tasks, it's a lot more manageable!

Like a chef who skillfully combines ingredients to create a delicious meal, we've combined elements of ReactJS (functional components, props, state, and map) to create a paginated data table with checkboxes. This table not only displays data in a structured manner but also allows users to select multiple items at once.

As you continue your journey in programming, remember to embrace the process of breaking complex problems into smaller, more manageable tasks. This approach - often called "decomposition" in computer science - is a powerful technique that can help you tackle even the most challenging coding problems. Happy coding!