[React Bootstrap] Pagination を表示してみる | 心を無にして始める React
今回は、Pagination コンポーネントを表示します。
準備
まだ components フォルダがなければ作ります。
src
を右クリックして New Folder
。
components と入力してフォルダを作ります。
今回は、components フォルダに Pagination のコンポーネントを作って、表示してみます。
公式のドキュメントはここ。
https://react-bootstrap.github.io/components/pagination/
Pagination コンポーネントをつくる
component フォルダに Pagination.js
を作ります。
Pagination.js
を心を無にして編集してみます。
import React from 'react';
import { Pagination as BootstrapPagination } from 'react-bootstrap';
const Item = ({ page, onClick }) => <BootstrapPagination.Item onClick={() => onClick(page)}>{page}</BootstrapPagination.Item>
function Pagination({
page = 1,
pageCount = 1,
onClick = () => { },
...otherProps
}) {
return (
<BootstrapPagination {...otherProps}>
<BootstrapPagination.First onClick={() => onClick(1)} />
<BootstrapPagination.Prev onClick={() => onClick(Math.max(page - 1, 1))} />
{page - 2 >= 1 && <Item page={page - 2} onClick={onClick} />}
{page - 1 >= 1 && <Item page={page - 1} onClick={onClick} />}
<BootstrapPagination.Item active={true}>{page}</BootstrapPagination.Item>
{page + 1 <= pageCount && <Item page={page + 1} onClick={onClick} />}
{page + 2 <= pageCount && <Item page={page + 2} onClick={onClick} />}
<BootstrapPagination.Next onClick={() => onClick(Math.min(page + 1, pageCount))} />
<BootstrapPagination.Last onClick={() => onClick(pageCount)} />
</BootstrapPagination>
);
}
export default Pagination;
プロジェクトでは、コンポーネントを統一したデザインで利用することが多いです。
そのため、(React Bootstrap のコンポーネントをその場その場でカスタマイズしながら使うよりも、)プロジェクトでコンポーネントにしたものを使うほうが、変更をお手軽に漏れなくできることが多いです。
Pagination コンポーネントを表示する
それでは、 App.js
を編集して Pagination コンポーネントを表示します。
import React, { useState } from 'react';
import './App.css';
import Pagination from './components/Pagination';
const PAGE_COUNT = 100;
function App() {
const [active, setActive] = useState(1);
return (
<>
<div className="p-5">
<Pagination page={active} pageCount={PAGE_COUNT} onClick={(x) => { setActive(x) }} />
</div>
</>
);
}
export default App;
画面を確認してみます。
はい、できました。