카테고리 없음
Warning: Each child in a list should have a unique "key" prop.
devWarrior
2022. 6. 1. 23:15

개발하는 크롱
크롱의 Dev Log
검색하기
CATEGORY
ReactJS | NextJS
[Warning: Each child in a list should have a unique "key" prop.] 에러 해결
개발하는 크롱 2020. 12. 22. 01:37문제점
아래와 같이 자바스크립트의 map 함수를 사용한 경우 콘솔에서 " Warning: Each child in a list should have a unique "key" prop "이라는 주의 문구를 확인할 수 있다.
{["AAA", "BBB", "CCC"].map(item =>
<div>{item}</div>
)}
React는 key prop을 사용하여 컴포넌트와 DOM 요소 간의 관계를 생성한다. 리액트 라이브러리는 이 관계를 이용해 컴포넌트 리렌더링 여부를 결정한다. 불필요한 리렌더링을 방지하기 위해서는 각 자식 컴포넌트마다 독립적인 key값을 넣어줘야 한다.
해결 방법
배열로 map 함수를 사용해 JSX 리스트를 구현할 때 key prop을 자식 컴포넌트마다 넣어줘야 한다.
Ex: <div key="uniqueId1" >Item1</div>
자바스크립트의 배열은 정적이지 않다.즉, 배열의 길이나 원소 등이 변할 수 있다는 의미이다. 따라서 배열의 index를 key prop으로 사용하는 것을 지양해야 한다.
배열의 원소의 순서가 바뀌면 index도 바뀌고 컴포넌트마다 고유해야 하는 key값도 같이 바뀌기 때문이다. 이렇게 되면 리액트는 리렌더링 해야하는 컴포넌트를 헷갈려 잘못된 컴포넌트를 리렌더링할 수 있다.
key가 전역적으로 고유할 필요는 없다. 형제 요소에서 고유해야 한다.
// BAD :(
{["AAA", "BBB", "CCC"].map((item,index) =>
<div key={index}>{item}</div>
)}
// GOOD :)
{["AAA", "BBB", "CCC"].map(item =>
<div key="{item}">{item}</div>
)}
좋아요공감
공유하기
글 요소
'ReactJS | NextJS' 카테고리의 다른 글
[번역] next/link 공식 문서 (0)[JSX element type 'Component' does not have any construct or call signatures.ts(2604)] 에러 해결 (0)[Warning: Each child in a list should have a unique "key" prop.] 에러 해결 (0)[Warning: useEffect received a final argument that is not an array (instead, received `string`). ] 에러 해결 (0)댓글 0 댓글펼치기
비밀글
입력
공지사항
최근에 달린 댓글
Total41,337Today78Yesterday104
링크
TAG
- dash-plotly
- 동적계획법
- 우선순위큐
- Dash
- 알고리즘
- 큐
- 머신러닝
- 자료구조
- reactjs
- 컴퓨터과학
- c++
- 회고
- React
- 카카오추천팀
- 코드포매터
- 다이나믹프로그래밍
- 컴퓨터공학
- 프로그래머스
- sql
- dfs
- 코테후기
- 스택
- MySQL
- 후위표기식
- JS
- 리액트
- plotly
- 자바스크립트
- 백준
- 개발
« 2022/05 »일월화수목금토
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 |
Blog is powered by Tistory / Designed by Tistory
크롱의 Dev Log 구독하기