리액트를 공부하거나 작업하다 보면 배열를 활용하는 경우가 매우매우 많다.
보통 배열로열 이루어진 데이터를 map() 메서드를 통해 배열 요소들을 뽑아내는데,
이때, 기능은 정상적으로 작동하지만 콘솔에 Warning이 뜰것이다.
이 Warning 메시지를 읽어보면 "고유한 key prop이 필요"하다고 말해준다.
여기서 말하는 고유한 key prop이 뭘까?
또한, 이 Warning을 어떻게 해결할 수 있을끼?
이 글에서 알아볼 것
- key prop
1. key prop
위에서도 언급했지만,
배열을 정상적으로 렌더링 하려면 고유한 key prop이 필요하다.
왜 그럴까?
배열 데이터의 요소들을 렌더링하여 리스트를 만들고, 거기에 새로운 요소를 동적으로 추가한다는 상황을 가정해보자
- 고유한 key prop이 없을때 작동 방식
- 배열 리스트에 맨마지막에 추가된 요소가 추가된다
- 그 후 모든 리스트를 재평가하여 코드에 작성되어있는 배열 순서에 맞춰 업데이트한다
=> 성능적으로 매우 안좋은 영향을 미친다
그럼 리액트에서 알려준 메시지대롤라면, 위의 문제를 해결해주는게 고유한 key prop이라는건데,
어떻게 해결해줄까?
- 고유한 key prop이 존재할때 작동 방식
- 배열 리스트에 맨마지막에 추가되는 것이 아니라, key prop이 어디에 추가되어야 하는지 알려준다
{props.expense.map((item) => {
return <ExpenseItem key={item.id} title={item.title} amount={item.amount} date={item.date}></ExpenseItem>;
})}
-> 컴포넌트 태그에 key 프로퍼티를 추가하고, 그 값으로 유니크한 값을 넣어줘야한다
결론
배열을 활용할때는 key prop을 추가해줘야 한다는 것을 항상 인지하자
'OLD > React' 카테고리의 다른 글
[React] React에서 사용자 입력을 컨트롤 하는 두 가지 방법 (state vs ref) (0) | 2023.02.26 |
---|---|
[React] React 여러 기능들 (Fragment, Portal) (0) | 2023.02.25 |
[React] React 스타일링 하는 방법 3개 (인라인&일반CSS, styled-components, CSS 모듈) (0) | 2023.02.23 |
[React] React에서 데이터를 활용하는 방법(state, 입력값 컨트롤, 이전 데이터 활용, 데이터 끌어올리기) (0) | 2023.02.21 |
[React] React 기본 개념(컴포넌트, JSX, props...) (0) | 2023.02.20 |