Frontend/react

[ react ] Warning: Each child in a list should have a unique “key” prop.

IT grow. 2023. 10. 12. 16:10
반응형

 

❗️에러메모❗️

 

react 에서 .map을 사용할 경우가 있습니다. 저의 경우에는 카드 영역의 리스트들을 .map을 통해 카드 컴포넌트들을 반환해 주고 있었는데요. 다음과 같은 error 를 뱉어 내서 당황스러웠습니다.

Warning: Each child in a list should have a unique "key" prop.

직역해 보면 ⁠ ⁠
경고: 목록의 각 하위 항목에는 고유한 "key" 속성이 있어야 합니다

 

⁠.map을 통해 컴포넌트의 고유한 key 값을 prop 으로 넘겨주면 되겠다 싶었는데 , 해결되지 않았습니다.

 

 

Ex-code)

postState.posts.map((post,idx) => (
     <BlogCard
        title={post.title}
        author={post.author}
        coverPhoto={post.coverPhoto}
        coverPhotoLight={post.coverPhotoLight}
        dataPublished={post.dataPublished}
        slug={post.slug}
        myKey = {post.id}
        postChk={"show"}
      />
))

 

.map 함수 몸체에 있는 BlogCard 컴포넌트에 key 값을 부여하는 방식이 아닌 , BlogCard 컴포넌트를 <Fragment> 로 감싼 뒤 key 값을 같이 부여하여 , unique 에러를 해결....

 

 

Solution-code)

postState.posts.map((post,idx) => (
 // 컴포넌트를 감싼 형태에서 Fragment 에 key 값을 줌으로써 BlogCard 컴포넌트의 unique key 값 유지
    <Fragment key={post.id}>
      <BlogCard
        title={post.title}
        author={post.author}
        coverPhoto={post.coverPhoto}
        coverPhotoLight={post.coverPhotoLight}
        dataPublished={post.dataPublished}
        slug={post.slug}
        postChk={"show"}
      />
    </Fragment>  
))

 

반응형