[React Bootstrap] Offcanvas を表示してみる | 心を無にして始める React
今回は、Offcanvas コンポーネントを表示します。
準備
まだ components フォルダがなければ作ります。
src
を右クリックして New Folder
。
components と入力してフォルダを作ります。
今回は、components フォルダに Offcanvas のコンポーネントを作って、表示してみます。
公式のドキュメントはここ。
https://react-bootstrap.netlify.app/components/offcanvas/
Offcanvas コンポーネントをつくる
component フォルダに Offcanvas.js
を作ります。
Offcanvas.js
を心を無にして編集してみます。
import React from 'react';
import { Offcanvas as BootstrapOffcanvas } from 'react-bootstrap';
function Offcanvas(props) {
const {
show,
handleClose,
title,
children,
...otherProps
} = props;
return (
<BootstrapOffcanvas show={show} onHide={handleClose} {...otherProps}>
<BootstrapOffcanvas.Header closeButton>
<BootstrapOffcanvas.Title>
{title}
</BootstrapOffcanvas.Title>
</BootstrapOffcanvas.Header>
<BootstrapOffcanvas.Body>
{children}
</BootstrapOffcanvas.Body>
</BootstrapOffcanvas>
)
}
export default Offcanvas;
プロジェクトでは、コンポーネントを統一したデザインで利用することが多いです。
そのため、(React Bootstrap のコンポーネントをその場その場でカスタマイズしながら使うよりも、)プロジェクトでコンポーネントにしたものを使うほうが、変更をお手軽に漏れなくできることが多いです。
Offcanvas コンポーネントを表示する
それでは、 App.js
を編集して Offcanvas コンポーネントを表示します。
import React, { useState } from 'react';
import './App.css';
import Button from './components/Button';
import Offcanvas from './components/Offcanvas';
function App() {
const [show, setShow] = useState(false);
const handleClose = (cb) => {
setShow(false);
if (cb) {
cb();
}
}
const handleShow = (cb) => {
setShow(true);
if (cb) {
cb();
}
}
return (
<>
<div className="p-5">
<Button variant="primary" onClick={handleShow}>表示</Button>
</div>
<Offcanvas show={show} handleClose={handleClose} title="メニュー">
<ul>
<li>エスプレッソ</li>
<li>エスプレッソマキアート</li>
<li>エスプレッソコンパナ</li>
<li>フラットホワイト</li>
<li>アメリカーノ</li>
<li>カフェモカ</li>
<li>カプチーノ</li>
<li>カフェラテ</li>
<li>カフェブラベ</li>
</ul>
</Offcanvas>
</>
);
}
export default App;
画面を確認してみます。
はい、できました。