728x90
반응형
여전히 사이드 프로젝트를 진행하고 있다.

이게 뭐냐고!
코드를 확인해봤다.
난 분명히 잘 설정 했는데?!
1. 문제 해결
- Fragment 사용
{teamList
.sort((a, b) => a.rate - b.rate)
.map((item) => {
return (
<React.Fragment key={item.name}>
<div
className=" flex flex-col w-full overflow-hidden relative"
style={item.rate === 1 ? { height: 230 } : null}
>
...
</div>
</React.Fragment>
);
})}
- Fragment 삭제
{teamList
.sort((a, b) => a.rate - b.rate)
.map((item) => {
return (
<div
className=" flex flex-col w-full overflow-hidden relative"
style={item.rate === 1 ? { height: 230 } : null}
key={item.name}
>
...
</div>
);
})}
2. 원인
리스트 렌더링할 때, key를 설정해야한다는 사실을 알고 있었는데,
Fragment 를 사용했다고 없는 애 취급을 했ㄷr,... (미안해..)
Fragment는 실제 DOM에 렌더링되지 않는 단순한 래퍼 역할을 한다.
하지만, React 내부적으로는 Fragment도 컴포넌트 트리에서 노드로 취급된다.
따라서, 리스트 렌더링에서 Fragment도 Key를 가져야 한다!
728x90
반응형
'쓰윽터디 > Next.js' 카테고리의 다른 글
[Next.js14 + Ts] build시 에러들 (0) | 2024.10.01 |
---|---|
[Next.js 14] form 데이터 받기 (0) | 2024.09.02 |
[스크롤 이벤트] 메뉴버튼 누르면 해당 위치로 이동하기 (0) | 2024.08.29 |
[Next.js] 회원가입 Form 만들기 (0) | 2023.08.06 |
[SVG 애니메이션] SVG 이미지에 애니매이션 넣기 (0) | 2023.08.02 |