Dropzone.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import React, { useCallback } from "react";
  2. import { useDropzone } from "react-dropzone";
  3. import { connect } from "react-redux";
  4. import { actionSetAvatar, actionUploadTracks } from "../actions";
  5. const MyDropzone = ({ promise, onloadAvatar, onloadMusic }) => {
  6. const onDrop = useCallback(
  7. (acceptedFiles) => {
  8. if (acceptedFiles[0].type.includes("audio")) {
  9. for (let i = 0; i < acceptedFiles.length; i++) {
  10. onloadMusic(acceptedFiles[i]);
  11. }
  12. } else {
  13. onloadAvatar(acceptedFiles[0]);
  14. }
  15. },
  16. [onloadAvatar, onloadMusic]
  17. );
  18. const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
  19. return (
  20. <div className="mt-2 text-center customBorder mx-auto" {...getRootProps()}>
  21. <input {...getInputProps()} />
  22. {isDragActive ? (
  23. <p>Поместите файлы сюда...</p>
  24. ) : (
  25. <p>
  26. Для загрузки перетащите файлы сюда или нажмите на поле и выберите
  27. файлы
  28. </p>
  29. )}
  30. </div>
  31. );
  32. };
  33. export const CMyDropzone = connect((state) => ({ promise: state.promise }), {
  34. onloadAvatar: actionSetAvatar,
  35. onloadMusic: actionUploadTracks,
  36. })(MyDropzone);