- 문제점 1 : 아이템 목록에서 맵을 돌려야되는데 키로 줄만한 특정한 값이 없는게 문제
- 해결방안 :
{items.map((item, index) => (
<div
key={index}
className="group shadow-md rounded-lg overflow-hidden"
>
{/* 아이템 이미지 */}
<div className="relative h-32 sm:h-36 md:h-40 flex justify-center items-center">
<Image
src={`${BASE_URL}/cdn/${latestVersion}/img/item/${item.image.full}`}
alt={item.name}
width={150}
height={150}
/>
</div>
{/* 아이템 정보 */}
<div className="p-4">
<h2 className="text-lg font-semibold text-center ">
{item.name}
</h2>
<p className="text-sm text-gray-500 text-center mt-2">
{item.plaintext || "설명 없음"}
</p>
</div>
</div>
))}
특정한 값이 없을 땐 파라미터에 index를 추가해서 키에 인덱스 값을 넣어주면 됨다. 사실 키값으로 유니크한 값을 주는게 좋긴하지만 정 없을 때는 인덱스를 넣어주면 됨!!
- 문제점 2 : 함수에 타입을 잘못줘서 에러 와장창
- 해결방안 :
export async function fetchVersion(): Promise<Champion[]> {
//최신 버전 정보 가져오기 api
try {
const versionRes = await fetch(`${BASE_URL}/api/versions.json`);
if (!versionRes.ok || !versionRes)
throw new Error("버전정보를 가져오지 못했습니다");
const versionData = await versionRes.json();
const latestVersion = versionData[0];
return latestVersion;
} catch (error) {
console.error("fetchVersion api호출 실패", error);
throw new Error("최신정보를 가져오지 못했습니다");
}
}
여기서 함수에 타입을 Champion[]을 줬는데 타입에러가 엄청남..
export interface Champion {
version: string; // 데이터 버전
id: string; // 챔피언 ID
key: string; // 챔피언 고유 키 (숫자 형식 문자열)
name: string; // 챔피언 이름
title: string; // 챔피언 직함
blurb: string; // 챔피언 요약 설명
info: ChampionInfo; // 공격/방어/마법/난이도 관련 정보
image: ChampionImage; // 이미지 관련 정보
tags: string[]; // 챔피언 태그 (예: Fighter, Mage 등)
partype: string; // 자원 유형 (예: Blood Well, Mana 등)
stats: ChampionStats; // 스탯 정보
}
챔피언 타입 안에 버전이 있길래 이걸 그대로 써도 되는줄 알았는데 버전정보 타입이 스트링이기 때문에 타입도 스트링으로 줘야함
export async function fetchVersion(): Promise<string> {
//최신 버전 정보 가져오기 api
try {
const versionRes = await fetch(`${BASE_URL}/api/versions.json`);
if (!versionRes.ok || !versionRes)
throw new Error("버전정보를 가져오지 못했습니다");
const versionData = await versionRes.json();
const latestVersion = versionData[0];
return latestVersion;
} catch (error) {
console.error("fetchVersion api호출 실패", error);
throw new Error("최신정보를 가져오지 못했습니다");
}
}
- 느낀점 : 타입스크립트 타입 정의하는게 너무 헷갈린다.. 아직 자바스크립트도 어렵고,,,, 공부 하면 할수록 어렵네
'Next.js 프로젝트' 카테고리의 다른 글
| Next.js 프로젝트 kpt 회고 (5) | 2024.12.23 |
|---|---|
| Next.js 프로젝트 트러블 슈팅 5 (0) | 2024.12.18 |
| Next.js 프로젝트 트러블 슈팅 3 (2) | 2024.12.14 |
| Next.js 프로젝트 트러블 슈팅 2 (0) | 2024.12.12 |
| Next.js 프로젝트 트러블 슈팅 1 (0) | 2024.12.11 |