리액트에서 이미지 업로드 하기 🤓
export default function App() {
const [images, setImages] = useState([]);
const handleChange = (e) => {
e.preventDefault();
const reader = new FileReader();
const file = e.target.files[0];
reader.onloadend = () => {
setImages((prev) => [...prev, reader.result]);
};
reader.readAsDataURL(file);
};
return (
<div className="App">
<h1>Image Uploader</h1>
<input type="file" onChange={handleChange} />
<Images images={images} />
</div>
);
}
URL.creatObjectURL()
은 object
를 받아서, 임시적인 local URL
을 생성한다. 그리고 그 url을 이미지의 src로 지정할 수 있다.
export default function App() {
const [images, setImages] = useState([]);
const handleChange = (e) => {
e.preventDefault();
const file = e.target.files[0];
const fileUrl = URL.createObjectURL(file); // (*)
setImages((prev) => [...prev, fileUrl]);
};
return (
<div className="App">
<h1>Image Uploader</h1>
<input type="file" onChange={handleChange} />
<Images images={images} />
</div>
);
}