[React Bootstrap] OverlayTrigger を表示してみる | 心を無にして始める React

今回は、OverlayTrigger コンポーネントを表示します。

準備
まだ components フォルダがなければ作ります。
src
を右クリックして New Folder
。

components と入力してフォルダを作ります。

今回は、components フォルダに OverlayTrigger のコンポーネントを作って、表示してみます。
公式のドキュメントはここ。
https://react-bootstrap.github.io/components/overlays/#overlaytrigger
OverlayTrigger コンポーネントをつくる
component フォルダに OverlayTrigger.js
を作ります。
OverlayTrigger.js
を心を無にして編集してみます。
import React from 'react';
import { OverlayTrigger as BootstrapOverlayTrigger } from 'react-bootstrap';
const OverlayTrigger = React.forwardRef(({
children,
...otherProps
}, ref) => {
return (
<BootstrapOverlayTrigger ref={ref} {...otherProps}>
{children}
</BootstrapOverlayTrigger>
)
})
export default OverlayTrigger;
プロジェクトでは、コンポーネントを統一したデザインで利用することが多いです。
そのため、(React Bootstrap のコンポーネントをその場その場でカスタマイズしながら使うよりも、)プロジェクトでコンポーネントにしたものを使うほうが、変更をお手軽に漏れなくできることが多いです。
OverlayTrigger コンポーネントを表示する
それでは、 App.js
を編集して OverlayTrigger コンポーネントを表示します。
import React from 'react';
import './App.css';
import OverlayTrigger from './components/OverlayTrigger';
function App() {
return (
<>
<div className="p-5 bg-dark">
<div className="p-5 d-flex flex-column justify-content-center align-items-center h-100">
<OverlayTrigger
placement="right"
trigger={["hover"]}
delay={{ show: 250, hide: 400 }}
overlay={
<div className="p-3 bg-danger text-light text-center rounded" style={{ width: 128 }}>
right
</div>
}
>
<div className="bg-light d-flex justify-content-center align-items-center rounded" style={{ width: 512, height: 384 }}>
<h1>BASE</h1>
</div>
</OverlayTrigger>
</div>
</div>
</>
);
}
export default App;
画面を確認してみます。

はい、できました。