본문 바로가기

Typescript & React/react-dropzone

react-dropzone

728x90

1. 설치

npm install --save react-dropzone

 

2. 본론

 useCallback 함수의 이해가 필요 

  • 두 번째 인자로 넘어온 배열 내의 값이 변경될 때까지 저장해 놓고 재사용할 수 있게 해준다. 
  • 아래의 예시에서 x 또는 y 값이 바뀌면 새로운 함수가 생성되어 result 변수에 할당된다. 
const result = useCallback(() => x + y, [x, y]);

 

 javascript 의 dragover 이벤트를 React에서 사용법

import React, { useCallback } from 'react';

const DragAndDrop = () => {

    const { getRootProps, getInputProps, isDragActive } = useDropzone({
        onDrop,✅
        accept: {
          'image/jpeg': ['.jpeg'],
          'image/png': ['.png'],
          'video/mp4': ['.mp4', '.MP4'],
        }
      });
      
    // ✅파일이 드롭됐을 때의 로직을 처리: acceptedFiles를 받는다.   
    const onDrop = useCallback( (acceptedFiles:any) => {
    
     console.log(acceptedFiles); //object 타입의 FileList 
     setDragFile(acceptedFiles) 

  	}, []);   
 	return (
    	<div {...getRootProps()} >
        	<input
            	{...getInputProps()}
                type="file"
                accept="image/*"
             />
    	</div>
    )
  
}

 

getRootProps 란?

  • getRootProps 함수는 파일 업로드 영역을 감싸는 최상위 DOM 엘리먼트에 필요한 프로퍼티를 반환
728x90