Skip to content
LogoLogo

Class components

If you're still using class components, use the <Dropzone> component provided by the lib:

import React, {Component} from "react";
import Dropzone from "react-dropzone";
 
class Basic extends Component {
  constructor() {
    super();
    this.onDrop = files => this.setState({files});
    this.state = {files: []};
  }
 
  render() {
    const files = this.state.files.map(file => (
      <li key={file.name}>
        {file.name} - {file.size} bytes
      </li>
    ));
 
    return (
      <Dropzone onDrop={this.onDrop}>
        {({getRootProps, getInputProps}) => (
          <section className="container">
            <div {...getRootProps({className: "dropzone"})}>
              <input {...getInputProps()} />
              <p>Drag 'n' drop some files here, or click to select files</p>
            </div>
            <aside>
              <h4>Files</h4>
              <ul>{files}</ul>
            </aside>
          </section>
        )}
      </Dropzone>
    );
  }
}