import { useState, useEffect } from 'react'; const useAudio = url => { const [audio] = useState(new Audio(url)); const [playing, setPlaying] = useState(false); const setUrl = url => { audio.src = url; }; useEffect(() => { playing ? audio.play() : audio.pause(); }, [playing] ); useEffect(() => { audio.addEventListener('ended', () => setPlaying(false)); return () => { audio.removeEventListener('ended', () => setPlaying(false)); }; }, []); return [playing, setPlaying, setUrl]; }; export default useAudio;