👇AddButtom 함수 부분
const AddButton = () => {
const imgRef = useRef();
const [imageUrl, setImageUrl] = useState(false);
const [imgFile, setImgFile] = useState("")
const onChangeImage = () => {
const reader = new FileReader();
const file = imgRef.current.files[0];
reader.readAsDataURL(file);
reader.onloadend = () => {
setImageUrl(reader.result);
setImgFile(file)
};
}
👇ref 가 있는 input박스 부분
<input
type="file"
onChange={onChangeImage}
id="upload-photo"
name="upload-photo"
ref={imgRef}
style={{ display: 'none' }}
/>
const file = imgRef.current.files[0];
imgRef로 우리가 원하는 위치인 input을 가리키게 됨 style={{ display: 'none' }}
을 설정하면 됨const onChangeImage = () => {
// File 혹은 Blob 객체를 이용해 파일의 내용을(혹은 raw data버퍼로) 읽고
사용자의 컴퓨터에 저장하는 것을 가능하게 해줌
//간단히 말하면 해당 파일 리더를 통해서 파일 정보를 읽을 수 있는 것
const reader = new FileReader();
//불러온 파일 정보
const file = imgRef.current.files[0];
//파일을 읽어 버퍼에 저장(해당 코드로 파일의 정보를 입력)
reader.readAsDataURL(file);
//읽기가 완료되면 아래코드 실행
reader.onloadend = () => {
setImageUrl(reader.result);
setImgFile(file)
};
}
<ImageBox src={imageUrl ? imageUrl : 'images/addImg.png'} />