Reactでページングを実装
Reactでページングを実装するために、データをページごとに分割し、それを表示するコンポーネントを作成します。
ライブラリをインストールする必要はありません。
以下にTypeScriptを使用した例を示します。
ページングのコンポーネント例
データタイプの定義
// types.ts export interface Item { id: number; name: string; }
ダミーデータの生成
// data.ts import { Item } from './types'; export const data: Item[] = Array.from({ length: 100 }, (_, i) => ({ id: i + 1, name: Item ${i + 1} }));
ページングコンポーネント
// Paging.tsx import React, { useState } from 'react'; import { Item } from './types'; import { data } from './data'; const ITEMS_PER_PAGE = 10; const Paging: React.FC = () => { const [currentPage, setCurrentPage] = useState(1); const totalPages = Math.ceil(data.length / ITEMS_PER_PAGE); const handlePageChange = (page: number) => { setCurrentPage(page); }; const getPaginatedData = () => { const startIndex = (currentPage - 1) * ITEMS_PER_PAGE; const endIndex = startIndex + ITEMS_PER_PAGE; return data.slice(startIndex, endIndex); }; return ( <div className={styles.container}> <ul className={styles.list}> {getPaginatedData().map((item: Item) => ( <li key={item.id} className={styles.item}> {item.name} </li> ))} </ul> <div className={styles.pagination}> {Array.from({ length: totalPages }, (_, i) => ( <button key={i} className={currentPage === i + 1 ? styles.active : ''} onClick={() => handlePageChange(i + 1)} > {i + 1} </button> ))} </div> </div> ); }; export default Paging;
コンポーネントの使用例
// App.tsx import React from 'react'; import Paging from './Paging'; const App: React.FC = () => { return ( <div> <h1>ページングの例</h1> <Paging /> </div> ); }; export default App;
この例では、Pagingコンポーネントを使用して、ダミーデータをページごとに表示しています。
各ページには10項目が表示され、ページの変更ボタンをクリックすることで現在のページを変更できます。
Paging.module.scssファイルでスタイルを定義しています。