Создание пользовательского компонента разбивки на страницы в ReactJS с нуля
Разбиение на страницы — это обычная функция веб-приложений, которая позволяет пользователям перемещаться по большому набору данных, разбивая его на более мелкие и более управляемые фрагменты. В этой статье мы рассмотрим, как с нуля создать собственный компонент разбиения на страницы в ReactJS, предоставляя пользователям интуитивно понятный и настраиваемый опыт разбиения на страницы.
Настройка проекта
Давайте настроим новый проект React, используя Create React App. Откройте терминал и выполните следующую команду:
npx create-react-app pagination-demo
После создания проекта перейдите в каталог проекта:
cd pagination-demo
Создание компонента пагинации
В каталоге src
создайте новый файл с именем Pagination.js
. Здесь мы определим наш пользовательский компонент разбивки на страницы.
import React from 'react'; const Pagination = ({ currentPage, totalPages, onPageChange }) => { const pageNumbers = []; for (let i = 1; i <= totalPages; i++) { pageNumbers.push(i); } return ( <nav> <ul className="pagination"> {pageNumbers.map((number) => ( <li key={number} className={currentPage === number ? 'active' : ''} onClick={() => onPageChange(number)} > {number} </li> ))} </ul> </nav> ); }; export default Pagination;
В приведенном выше коде мы определяем Pagination
компонент как функциональный компонент, который принимает три реквизита: currentPage
, totalPages
и onPageChange
. Свойство currentPage
представляет текущую активную страницу, totalPages
представляет общее количество страниц, а onPageChange
представляет собой функцию обратного вызова, запускаемую при нажатии на страницу.
Мы генерируем массив номеров страниц внутри компонента с помощью цикла. Затем мы визуализируем список номеров страниц, выделяя текущую страницу и прикрепляя обратный вызов onPageChange
к каждому элементу списка.
Использование компонента пагинации
Теперь, когда у нас есть собственный компонент разбивки на страницы, давайте воспользуемся им в примере приложения, чтобы увидеть его в действии.
В каталоге src
создайте новый файл с именем App.js
и замените его содержимое следующим кодом:
import React, { useState } from 'react'; import Pagination from './Pagination'; const App = () => { const [currentPage, setCurrentPage] = useState(1); const totalPages = 10; const handlePageChange = (pageNumber) => { setCurrentPage(pageNumber); }; return ( <div className="App"> <h1>Sample Application</h1> <div className="data-container"> {/* Render your data here */} </div> <Pagination currentPage={currentPage} totalPages={totalPages} onPageChange={handlePageChange} /> </div> ); }; export default App;
В приведенном выше коде мы импортируем компонент Pagination
и используем его в компоненте App
. Мы устанавливаем переменную состояния currentPage
с помощью хука useState
и определяем totalPages
как константу.
Мы также определяем функцию handlePageChange
, которая обновляет состояние currentPage
при нажатии на страницу.
Внутри оператора return вы можете заменить div
на имя класса data-container
с вашей собственной логикой рендеринга данных. Компонент Pagination
размещается ниже контейнера данных, передавая необходимые реквизиты.
Стилизация компонента пагинации
Наконец, давайте добавим несколько стилей CSS, чтобы наша нумерация страниц
В каталоге src
создайте новый файл с именем Pagination.css
и добавьте следующий код CSS:
.pagination { display: flex; list-style-type: none; margin: 0; padding: 0; } .pagination li { cursor: pointer; padding: 8px; border: 1px solid #ccc; margin-right: 4px; } .pagination li.active { background-color: #ccc; color: #fff; }
В приведенном выше коде мы определяем стили CSS для компонента Pagination. Класс .pagination
оформляет неупорядоченный список, содержащий номера страниц, отображая его в виде горизонтальной строки без маркеров. Стили .pagination li
каждого элемента списка задают ему рамку, отступы и поля. Класс .pagination li.active
выделяет активную страницу другим цветом фона и цветом текста.
Чтобы связать файл CSS с компонентом Pagination, откройте файл Pagination.js
и добавьте следующий оператор импорта вверху:
import './Pagination.css';
Сохраните файл, и теперь компонент Pagination будет оформлен в соответствии с правилами CSS, определенными в Pagination.css
.
Вы можете дополнительно настроить стили в соответствии с требованиями дизайна вашего приложения. Не стесняйтесь изменять код CSS, чтобы добиться желаемого внешнего вида.
Заключение
Поздравляем! Вы успешно создали собственный компонент разбивки на страницы в ReactJS с нуля. Создав этот многоразовый компонент, вы сможете легко включить в свои приложения функции разбиения на страницы и предоставить своим пользователям удобную навигацию.
Помните, что вы можете еще больше улучшить компонент, добавив дополнительные функции, такие как кнопки «Предыдущий/Далее», показ многоточия для длинных списков страниц или интегрировав его с API для динамической выборки данных.
Не стесняйтесь экспериментировать с кодом и исследовать различные способы расширения и настройки компонента разбивки на страницы в соответствии с вашими конкретными потребностями.
Удачного кодирования!