前提・実現したいこと
ボタンクリックにより、togglingという関数を発火させて、playingのstateを変更したい。
発生している問題・エラーメッセージ
ボタンクリックでtogglingという関数を呼び出しているが、togglingが実行されず、playingの値が変更されないため、際レンダリングされずにAudioが再生されない。
該当のソースコード
audio
1const url = "http://www.ne.jp/asahi/music/myuu/wave/hana.mp3"; 2 const useAudio = (url: string) => { 3 const [audio] = useState(new Audio(url)); 4 console.log(audio); 5 const [playing, setPlaying] = useState(false); 6 const toggling = useCallback(e => { 7 setPlaying(!playing); 8 console.log(playing); 9 }, []); 10 11 useEffect(() => { 12 playing ? audio.play() : audio.pause(); 13 }, [playing]); 14 15 useEffect(() => { 16 audio.addEventListener("ended", () => setPlaying(false)); 17 return () => { 18 audio.removeEventListener("ended", () => setPlaying(false)); 19 }; 20 }, []); 21 22 return [playing, toggling]; 23 }; 24 const [playing, toggling] = useAudio(url); 25
audioPlayerProps: { buttonPlayProps: { buttonType: 2, onClickAction: () => { toggling; }, label: playing ? "Pause" : "Play" } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/29 02:51
2020/06/29 03:18