- {pages}
{renderPageNumbers()}
);
};
export default Pagination;
```
### 3. 样式添加
为了提升用户体验,我们需要为分页组件添加一些基本的CSS样式。这里简单演示如何通过内联样式或外部CSS文件来美化组件:
```css
/* Pagination.css */
.pagination {
display: flex;
justify-content: center;
align-items: center;
list-style: none;
padding: 0;
margin: 20px 0;
}
.pagination button {
margin: 0 5px;
padding: 5px 10px;
cursor: pointer;
}
.pagination ul {
display: flex;
list-style: none;
padding: 0;
}
.pagination li {
margin: 0 5px;
padding: 5px 10px;
cursor: pointer;
user-select: none;
}
.pagination li.active {
background-color: #007bff;
color: white;
}
```
然后,在React组件中引入这个CSS文件:
```jsx
import './Pagination.css';
```
### 4. 组件的灵活性与扩展性
为了使分页组件更加灵活和可重用,我们可以考虑添加一些props来允许外部定制,比如:
- `pageSizeOptions`:允许用户选择每页显示的条目数。
- `customClass`:允许用户为分页组件添加自定义的CSS类。
- `limitRange`:限制页码显示的范围,比如只显示当前页前后的几页。
```jsx
const Pagination = ({
totalItems,
itemsPerPage,
pageSizeOptions,
onChange,
customClass,
limitRange = 3,
...props
}) => {
// ... (省略部分代码)
// 渲染页码按钮,增加范围限制
const renderPageNumbers = () => {
let start = Math.max(1, currentPage - limitRange);
let end = Math.min(totalPages, currentPage + limitRange);
let pages = [];
for (let i = start; i <= end; i++) {
pages.push(
// ... (与上文相同)
);
}
// 添加省略号逻辑(如果需要)
if (start > 1) {
pages.unshift(- {pages}
{/* ... (省略部分代码) */}
);
};
```
### 5. 在项目中使用分页组件
最后,我们来看看如何在React项目中使用这个分页组件。首先,确保你的父组件能够传递必要的props,并处理`onChange`事件来更新数据或状态。
```jsx
import React, { useState } from 'react';
import Pagination from './Pagination';
const MyComponent = () => {
const [currentPage, setCurrentPage] = useState(1);
const [items, setItems] = useState([]); // 假设这是你的数据列表
// 模拟加载数据
const fetchData = (page) => {
// 这里应该是你的数据加载逻辑
// 假设每页10条数据,总数据量由你的API或数据源决定
const itemsPerPage = 10;
const totalItems = 100; // 假设总数据量为100
// 简化处理,实际项目中应该是异步请求数据
setItems(Array.from({ length: itemsPerPage }, (_, i) => `Item ${(page - 1) * itemsPerPage + i + 1}`));
};
useEffect(() => {
fetchData(currentPage);
}, [currentPage]);
return (
{/* 显示数据列表 */}
{items.map((item, index) => (
setCurrentPage(page)}
/>
);
};
export default MyComponent;
```
### 结语
通过上述步骤,我们构建了一个基本的自定义分页组件,并探讨了如何增加其灵活性和扩展性。这个组件可以很容易地集成到任何React项目中,帮助开发者更有效地管理大量数据的显示。在实际应用中,你可能需要根据项目的具体需求对组件进行进一步的定制和优化。希望这篇文章能为你开发React分页组件提供一些有用的思路和参考,同时,也欢迎你访问“码小课”网站,探索更多React及前端开发的精彩内容。 {item}
))}
{/* 分页组件 */}