Each child in a list should have a unique "key" prop.
{responseMsgArr.map((responesMsg, idx) => {
const createAt = new Date(responesMsg.createdAt);
return (
<S.ContentPTime>
<S.MsgContentP>
{responesMsg.text}
</S.MsgContentP>
<S.MessageTime>
{`${createAt.getHours().toString().padStart(2, "0")}:${createAt.getMinutes().toString().padStart(2, "0")}`}
</S.MessageTime>
</S.ContentPTime>
)
})}
다음 상황에서 자식요소에 unique key를 달라는 에러가 나온다.
{responseMsgArr.map((responesMsg, idx) => {
const createAt = new Date(responesMsg.createdAt);
return (
<S.ContentPTime key={idx}> //추가
<S.MsgContentP>
{responesMsg.text}
</S.MsgContentP>
<S.MessageTime>
{`${createAt.getHours().toString().padStart(2, "0")}:${createAt.getMinutes().toString().padStart(2, "0")}`}
</S.MessageTime>
</S.ContentPTime>
)
})}
다음과 같이 추가해주면 된다.
자식의 자식에 따로 key가 필요하진 않고 map 돌리는 바로 아래 자식만 잘 챙겨주자.
key가 전역적으로 고유할 필요는 없다. 만약 그랬다면 위의 코드는 ( 코드 스니펫으로는 보이진 않지만 ) 에러를 뱉어야 했다. 반복문 안에서만 고유하면 된다.
'Front-End' 카테고리의 다른 글
최적화 관련 useRecoilState, useState (0) | 2023.08.25 |
---|---|
react contextMenu 만들기 (0) | 2023.08.24 |
채팅-React.memo() (0) | 2023.08.22 |
채팅 - Array.prototype.reduce() (0) | 2023.08.22 |
React hook 최적화 (0) | 2023.08.22 |