track.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import {useState,useEffect,useRef} from "react";
  2. import play from '../play.svg'
  3. import pause from '../pause.svg'
  4. import {store,actionTrackPlay,actionTrackStop} from "../reducers";
  5. import {connect} from "react-redux";
  6. import {backURL} from "../actions";
  7. export const Track = ({track:{id,url,originalFileName}}) => {
  8. let audioSrc = backURL + '/'+ url
  9. const [isPlaying, setIsPlaying] = useState(false);
  10. const audioRef = useRef(new Audio(audioSrc));
  11. useEffect(() => {
  12. if (isPlaying) {
  13. audioRef.current.play();
  14. } else {
  15. audioRef.current.pause();
  16. }
  17. }, [isPlaying]);
  18. return (
  19. <div className='Tracks'>
  20. {isPlaying ? (
  21. <button onClick={() => setIsPlaying(false)}>
  22. <img src={pause}/>
  23. </button>
  24. ) : (
  25. <button onClick={() => setIsPlaying(true)}>
  26. <img src={play}/>
  27. </button>
  28. )}
  29. <span>{originalFileName}</span>
  30. </div>
  31. )
  32. }
  33. export const CTrack = connect(null, {trackPlay: actionTrackPlay, trackStop: actionTrackStop})(Track)