https://codesandbox.io/s/vigilant-wu-rwrpr?file=/src/App.js:76-861
const usePlayer = (src) => {
const [audio] = useState(new Audio(src));
const [playing, setPlaying] = useState(false);
useEffect(() => {
playing ? audio.play() : audio.pause();
}, [audio, playing]);
audio.onended = function () {
setPlaying(false);
};
return {
playing,
setPlaying
};
};
const Player = ({ src }) => {
const { playing, setPlaying } = usePlayer(src);
return (
<>
{playing ? (
<button onClick={() => setPlaying(false)}>pause</button>
) : (
<button onClick={() => setPlaying(true)}>play</button>
)}
</>
);
};
export default function App() {
return (
<div className="App">
<Player src="https://upload.wikimedia.org/wikipedia/commons/c/c8/Example.ogg"></Player>
</div>
);
}
Может кто-нибудь подсказать? Почти уверен, что какую-то мелочь упускаю.
Обсуждают сегодня