はじめに
取得したポケモンのデータを、見やすく表示するためにカード形式でデザインします。
本記事では、Card コンポーネントを作成し、Material UIを活用してポケモンの情報をグリッドレイアウトで表示する方法を解説します。
Cardコンポーネントを作成
App.js
import { useEffect, useState } from 'react';
#省略
import Card from './components/Card/Card';
function App() {
#省略
return (
<div className="App">
{loading ? (
<h1>ロード中・・・</h1>
) : (
<>
<div className='pokemonCardContainer'>
{pokemonData.map((pokemon, i) => {
return <Card key={i} pokemon={pokemon} />
})}
</div>
</>
)}
</div>
);
}
export default App;
src/components/Card/Card.js
import React from 'react'
const Card = ({ pokemon }) => {
return (
<div>Card</div>
)
}
export default Card
ポケモンデータをページに表示する
ポケモンの画像データがどこにあるのか確認
Card.js
import React from 'react'
const Card = ({ pokemon }) => {
return (
<div className='card'>
<div className='cardImg'>
<img src={pokemon.sprites.front_default} alt=''/>
</div>
<h3 className='cardName'>{pokemon.name}</h3>
<div className='cardTypes'>
<div>タイプ</div>
{pokemon.types.map((type) => {
return <div>
<span className='typeName'>{type.type.name}</span>
</div>
})}
</div>
<div className='cardInfo'>
<div className='cardData'>
<p className='title'>重さ:{pokemon.weight}</p>
</div>
</div>
<div className='cardInfo'>
<div className='cardData'>
<p className='title'>高さ:{pokemon.height}</p>
</div>
</div>
<div className='cardInfo'>
<div className='cardData'>
<p className='title'>アビリティ:{pokemon.abilities[0].ability.name}</p>
</div>
</div>
</div>
)
}
export default Card

ポケモンをグリッドで表示する
App.css
.App {
text-align: center;
width: 100%;
height: 100vh;
}
.pokemonCardContainer {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
place-items: center;
gap: 20px;
margin-top: 60px;
}
Card.js
import "./Card.css";
src/components/Card.css
CSSボックスシャドウジェネレーター
Card.css
.card {
width: 290px;
box-shadow: 6px 9px 15px -5px #777777;
border-radius: 20px;
background-color: rgba(255, 255, 226, 0.712);
}
.cardName {
padding: 0;
font-size: 24px;
margin-bottom: 10px;
margin-top: 0;
}
.cardInfo {
text-align: center;
}
index.css
body {
#省略
background-color: rgb(219, 191, 157); #背景カラーを作成
}
#省略
動作確認
ヘッダーを作成
App.js
import Navbar from './components/Navbar/Navbar';
return (
<>
<Navbar />
#省略
src/components/Navbar/Navbar.js
import React from 'react';
import "./Navbar.css";
const Navbar = () => {
return (
<nav>ポケモン図鑑</nav>
)
}
export default Navbar
src/components/Navbar/Navbar.css
nav {
background-color: bisque;
color: rgba(0, 0, 0, 0.836);
height: 65px;
font-weight: 600;
font-size: 25px;
display: flex;
justify-content: center;
align-items: center;
}

