[React Bootstrap] Figures を表示してみる | 心を無にして始める React
今回は、Figure コンポーネントを表示します。
準備
まだ components フォルダがなければ作ります。
src
を右クリックして New Folder
。
components と入力してフォルダを作ります。
今回は、components フォルダに Figure のコンポーネントを作って、表示してみます。
公式のドキュメントはここ。
https://react-bootstrap.github.io/components/figures/
Figure コンポーネントをつくる
component フォルダに Figure.js
を作ります。
Figure.js
を心を無にして編集してみます。
import React from 'react';
import { Figure as BootstrapFigure } from 'react-bootstrap';
function Figure(props) {
const {
caption,
imgSrc,
imgAlt,
...otherProps
} = props;
return (
<BootstrapFigure {...otherProps}>
{
imgSrc && (
<BootstrapFigure.Image
src={imgSrc}
alt={imgAlt || ''}
/>
)
}
{
caption && (
<BootstrapFigure.Caption>
{caption}
</BootstrapFigure.Caption>
)
}
</BootstrapFigure>
)
}
export default Figure;
プロジェクトでは、コンポーネントを統一したデザインで利用することが多いです。
そのため、(React Bootstrap のコンポーネントをその場その場でカスタマイズしながら使うよりも、)プロジェクトでコンポーネントにしたものを使うほうが、変更をお手軽に漏れなくできることが多いです。
Figure コンポーネントを表示する
それでは、 App.js
を編集して Figure コンポーネントを表示します。
import './App.css';
import Figure from './components/Figure';
function App() {
return (
<div className="m-5">
<Figure
caption="図 1-1. くろいがぞう'"
imgSrc="http://placehold.jp/20232a/fafafa/192x192.jpg"
imgAlt="サンプル"
/>
</div >
);
}
export default App;
画面を確認してみます。
はい、できました。
プロジェクトに配置した画像を表示
これまで、外部のダミー画像をつかってきましたが、通常はプロジェクトに配置した画像を表示します。
今回は、flower.png
という花の画像ファイルを表示させます。
publicフォルダに flower.png
を配置します。
こんな感じです。
では、App.js
を編集して花の画像にしてみます。
import './App.css';
import Figure from './components/Figure';
function App() {
return (
<div className="m-5">
<Figure
caption="[写真] ダリアの花"
imgSrc={`${process.env.PUBLIC_URL}/flower.png`}
imgAlt="ダリアの花"
/>
</div >
);
}
export default App;
画面を確認してみます。
はい、できました。
プロジェクトに配置した画像を表示 ②
コンポーネントの部品やアイコンは assets
フォルダを作って、そこにおきましょう。
おすすめは build 後にできるフォルダ構成をそのまま src 配下に作っておく形です。
この場合は、pngファイルなので assets/media
フォルダに配置します。
こんな感じです。
では、App.js
を編集して花の画像にしてみます。
import './App.css';
import Figure from './components/Figure';
import Image from './assets/media/flower.png';
function App() {
return (
<div className="m-5">
<Figure
caption={'[写真] ダリアの花'}
imgSrc={Image}
imgAlt="ダリアの花"
/>
</div >
);
}
export default App;
表示される画面は同じなので、割愛します。
はい、できました。