[오류] Each child in a list should have a unique
193
작성한 질문수 5
Multer 이용하여 파일 업로드할떄
Each child in a list should have a unique 오류가자꾸 뜹니다..
import React from 'react'
import Dropzone from 'react-dropzone'
import axiosInstance from '../utils/axios';
import PropTypes from 'prop-types';
const FileUpload = ({ onImageChange, images }) => {
const handleDrop = async (files) => {
let formData = new FormData();
const config = {
header: { 'content-type': 'multipart/form-data' }
}
formData.append('file', files[0]);
try {
const response = await axiosInstance.post('/products/image', formData, config);
onImageChange([...images, response.data.fileName]);
} catch (error) {
console.error(error);
}
}
return (
<div className='flex gap-4'>
<Dropzone onDrop={handleDrop}>
{({ getRootProps, getInputProps }) => (
<section
className='min-w-[300px] h-[300px] border flex items-center justify-center'
>
<div {...getRootProps()}>
<input {...getInputProps()} />
<p className='text-3xl'>+</p>
</div>
</section>
)}
</Dropzone>
<div className='flex-grow h-[300px] border flex items-center justify-center overflow-x-scroll overflow-y-hidden'>
{images.map(image => (
<div key={image}>
<img
className='min-w-[300px] h-[300px]'
src={`${import.meta.env.VITE_SERVER_URL}/${image}`}
alt={image}
/>
</div>
))}
</div>
</div>
)
}
FileUpload.propTypes = {
// onImagesChnage: PropTypes.bool.isRequired,
onImageChange: PropTypes.any,
images: PropTypes.any,
};
export default FileUpload

답변 1
0
안녕하세요, 인프런 AI 인턴입니다. volcano1122님의 질문에 대해 알아보았습니다.
질문에서 언급된 “Each child in a list should have a unique” 오류는 React에서 배열을 렌더링 할 때 각 요소에 고유한 key 속성을 제공해야 하는데, 해당 속성이 누락되거나 중복될 경우 발생합니다. key는 React가 컴포넌트의 상태 변화를 효과적으로 추적할 수 있도록 도와줍니다.
해당 오류와 유사한 문제에 대한 설명 및 해결 방법을 제공하는 기존 답변 링크를 찾았습니다. 이 문제는 리스트를 렌더링하는 과정에서 고유한 키를 지정하지 않아 발생하는 것으로 보이며, 각 이미지 요소에 고유한 키 값을 할당함으로써 해결할 수 있습니다.
관련 질문 및 답변:
- map 에서의 warning 에러
- 이 답변에서는 리스트 렌더링 시 각 항목에 고유한
key속성을 부여하는 방법에 대해 설명하고 있습니다. 이미지 리스트를 렌더링할 때, 고유한 값을key로 제공해야 한다는 점에서 유사한 문제로 볼 수 있습니다. 특히 이미지 파일명을 고유 값으로 사용하여key속성을 설정할 수 있습니다.
- 이 답변에서는 리스트 렌더링 시 각 항목에 고유한
{images.map((image, index) => (
<div key={image+index}> {/* image 이름과 index를 조합하여 고유한 키를 생성 */}
<img
className='min-w-[300px] h-[300px]'
src={`${import.meta.env.VITE_SERVER_URL}/${image}`}
alt={image}
/>
</div>
))}
위 코드와 같이 이미지 이름에 index 값을 더해 고유한 키를 생성하는 방법을 시도해보실 수 있습니다. 이 방법이 만약 이미지 파일 이름이 중복될 수 있는 상황에도 적합합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강의 내용은 훌륭하나, 환경 설정 오류 때문에 진도를 나갈 수 없습니다. 20년 버전 강의.
0
68
1
강의자료는 어디서 볼 수있나요??
0
76
1
이 쇼핑몰 만들기 강의는 관리자페이지 만드는건 없나요
0
129
2
웹에서 실시간 코드반영이 안돼요
0
131
1
app.use질문
0
69
1
강사님께 어떻게 직접질문할수있어요??
0
82
1
const함수같은거 기초강의는 어디있나요
0
90
2
리덕스 참조챕터가 어딨어요? 미리듣고오라는데요
0
84
2
강의가완전 오래되서 다 틀리네 app.jsx도 tailwind css 다틀림 무책임함
0
72
1
개발자도구에 redux란이 없어요
0
93
1
npx tailwindcss init -p 에서 계속 에러나요
0
97
1
쇼핑몰기능중 찜하기 기능은 어떻게 구현하나요
0
145
2
강의하다 줌으로 설명가능한지좀 정확히 알려주세요. 이 선생님 정책이 어떻게 되는데요. 직접 연락할 메일이라도 알려주세요
0
45
1
도표 강의 자료 열람 불가능
0
112
1
tailwindcss를 vite에서 이용하는 방식이 바뀐것 같습니다.
0
1143
2
eslint 설정 후 오류가 납니다.
0
226
1
오버로드 오류
0
157
1
VSCode에서 save를 할 때, landingpage의 useEffect가 실행되는 문제에 대하여
0
175
1
dispatch(logoutUser()) 실행시 dispatch(authuser())도 함께 실행되는 문제
0
234
2
logout할 때, server로 요청을 보내서 authUser middleware를 통과하도록 하는 이유?
0
198
1
webkit-text-size-adjust 오류
0
319
1
does not provide an export named 'userReducer'
0
221
2
빌드 배포
0
141
1
삭제 예정 강의는 언제 삭제 되나요? 저것때문에 수강완료를 못하면 회사에서 비용을 청구한다고 합니다~
0
227
2






