【React入門】画像ギャラリーの作り方を完全解説|サムネイル&モーダル対応で学ぶUI構築

プログラミング

「Reactで何か実用的なアプリを作ってみたいけれど、何がよいか分からない…」
そんな方におすすめなのが画像ギャラリーアプリです。
このアプリでは、サムネイルの表示・モーダルでの拡大・状態管理などを通じて、Reactの主要スキルを一度に学べます。

React 画像ギャラリーの作り方

結論:UIの基礎と状態管理が学べます

画像ギャラリーは、Reactでの状態の管理、イベント処理、リスト描画の方法を学ぶのに最適な題材です。

プロジェクト準備と環境構築

使用ツールと技術

  • React(create-react-app)
  • CSSモジュールまたはstyled-components
  • 画像データはローカルもしくは外部URL
1
2
npx create-react-app image-gallery
cd image-gallery

ギャラリーの構成とコンポーネント

ページ構成

  • トップページ(画像一覧)
  • 拡大画像用モーダル

コンポーネント設計

  • Gallery.js:全体表示
  • Thumbnail.js:サムネイル
  • Modal.js:拡大画像表示

サムネイル表示の実装

配列から画像をマップ表示

1
2
3
4
5
const images = [
  { id: 1, src: "/img/photo1.jpg", alt: "料理1" },
  { id: 2, src: "/img/photo2.jpg", alt: "料理2" },
  ...
];
1
2
3
4
5
<div className="gallery">
  {images.map(img => (
    <img key={img.id} src={img.src} alt={img.alt} onClick={() => openModal(img)} />
  ))}
</div>

モーダルの拡大表示機能

状態管理と条件付き描画

1
2
3
4
5
6
7
const [selectedImage, setSelectedImage] = useState(null);
 
{selectedImage && (
  <div className="modal" onClick={() => setSelectedImage(null)}>
    <img src={selectedImage.src} alt={selectedImage.alt} />
  </div>
)}

公的機関のデザインに関する参考

  • デジタル庁「UI/UXガイドライン」:https://www.digital.go.jp/policies/design/
  • 経産省「誰一人取り残さないデザイン」:https://www.meti.go.jp/policy/mono_info_service/mono/design/

よくあるエラーと対応策

画像が表示されない場合

  • 相対パスまたはファイル名が誤っている
  • publicフォルダ内の画像配置に注意

モーダルが閉じない

  • イベント伝播の阻止忘れ(e.stopPropagation()を活用)

完成コードまとめ

最終的なコードは以下のようになります。

App.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import React, { useState } from "react";
import "./App.css";
 
const images = [
  { id: 1, src: "/img/photo1.jpg", alt: "料理1" },
  { id: 2, src: "/img/photo2.jpg", alt: "料理2" },
  { id: 3, src: "/img/photo3.jpg", alt: "料理3" },
];
 
function App() {
  const [selectedImage, setSelectedImage] = useState(null);
 
  return (
    <div className="App">
      <h1>画像ギャラリー</h1>
      <div className="gallery">
        {images.map((img) => (
          <img
            key={img.id}
            src={img.src}
            alt={img.alt}
            onClick={() => setSelectedImage(img)}
            className="thumb"
          />
        ))}
      </div>
      {selectedImage && (
        <div className="modal" onClick={() => setSelectedImage(null)}>
          <img src={selectedImage.src} alt={selectedImage.alt} />
        </div>
      )}
    </div>
  );
}
export default App;

まとめ:UIの基本を学ぶ第一歩

画像ギャラリーアプリは、Reactの基本的なコンポーネント設計・イベント処理・状態管理をすべて含んだ題材です。
実装を通して、UI構築の自信がつき、応用力も養われるでしょう。

タイトルとURLをコピーしました