요약
react-dnd는 Drag & Drop이 필요한 더 넓은 범위로 활용 가능한 라이브러리라서 react-dropzone만 사용해도 될 것 같다.
1. react-dropzone
샘플 코드
// ...
const [acceptedFiles, setAcceptedFiles] = useState<File[]>([]);
const onDropFiles = (acceptedFiles: File[]) => {
setAcceptedFiles(acceptedFiles);
console.log(acceptedFiles);
}
return (
// ...
<Dropzone onDrop={onDropFiles}>
{({getRootProps, getInputProps}) => (
<section className="bg-orange-400 py-6 rounded">
<div {...getRootProps()}>
<input {...getInputProps()} />
{_.isEqual(acceptedFiles.length, 0) ?
<p className="cursor-pointer">파일을 첨부해주세요.</p> : acceptedFiles.map((file, idx) => (
<div key={`file` + idx}>{acceptedFiles[idx].name}</div>))}
</div>
</section>
)}
</Dropzone>
)
Github (Star 10.3K / Fork 779)
https://github.com/react-dropzone/react-dropzone
특징
- 원하는대로 UI 유연하게 커스텀 가능
- N개 첨부 가능
- Files 관련 상태값 활용하여 쉽게 사용 가능
2. react-dnd
https://react-dnd.github.io/react-dnd/about
https://github.com/react-dnd/react-dnd/
특징
- 원하는대로 UI 유연하게 커스텀 가능
- 파일 외에 drag & drop 관련 UI에 모두 사용하는 라이브러리
- 파일 외의 용도로 사용하고자 한다면 활용할법 하나, 현재는 파일 관련 Drag & Drop UI만 필요함
'개발 > React.js' 카테고리의 다른 글
OAuth 인증 - 인가에 대하여 (0) | 2024.09.13 |
---|---|
전역 상태 관리 라이브러리 - Zustand vs Recoil (0) | 2024.09.13 |
Excel 파싱 관련 (0) | 2024.09.13 |
React Storybook 사용 방법 (0) | 2024.09.13 |
한 입 크기로 잘라먹는 리액트 Chapter 5. 리액트의 기본 기능(1) (0) | 2023.10.17 |