avatar.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {useCallback} from "react";
  2. import {store} from "../../reducers";
  3. import {actionSetAvatar, actionUploadImage, backURL} from "../../actions";
  4. import {useDropzone} from "react-dropzone";
  5. import {connect} from "react-redux";
  6. function AvatarDropzone({ onLoad }) {
  7. const onDrop = useCallback((acceptedFiles) => {
  8. // Do something with the files
  9. onLoad(acceptedFiles[0]);
  10. store.dispatch(actionSetAvatar(acceptedFiles[0]));
  11. }, []);
  12. const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
  13. return (
  14. <div {...getRootProps()}>
  15. <input {...getInputProps()} />
  16. {isDragActive ? (
  17. <p>Перетащите файл сюда ...</p>
  18. ) : (
  19. <p>Сменить аву, нажмите или перетащите файл</p>
  20. )}
  21. </div>
  22. );
  23. }
  24. export const CAvatarDropZone = connect (null, {onLoad: actionUploadImage}) (AvatarDropzone)
  25. const Avatar = ({ avatarURL = {} }) => {
  26. console.log(avatarURL);
  27. return (
  28. <div className='Avatar'>
  29. <img src={backURL + "/" + avatarURL.avatar?.url}></img>
  30. </div>
  31. )
  32. };
  33. export const CAvatar = connect((state) => ({avatarURL: state.promise.aboutMe?.payload}))(Avatar)