条件分岐などのイベントによるページ遷移で、ページ遷移先にAudioオブジェクトを渡す方法を教えていただけないでしょうか。
下記は動作サンプルです。
サンプル
現状はページの遷移ができない状態です。
ページの遷移はReact Routerを使用しています。
遷移元でAudioオブジェクトを再生し、遷移先でAudioオブジェクトを停止できればよいので、使用するライブラリや方法にこだわりはありません。
該当部分のコード
遷移元
jsx
1const audio = new Audio(); 2audio.loop = true; 3audio.play(); 4console.log(audio); 5history.push({ 6 pathname: "/next", 7 state: { obj: audio } 8});
遷移先
jsx
1const Next = prop => { 2 const audio = prop.location.state.obj; 3 const stopSound = () => { 4 console.log(audio); 5 audio.pause(); 6 }; 7 8 return ( 9 <button onClick={stopSound}>停止</button> 10 ); 11};
試したこと
渡すオブジェクトをstring型にするとページが遷移し、遷移先にオブジェクトを渡すことができました。
jsx
1const audio = "audio"; 2console.log(audio); 3history.push({ 4 pathname: "/next", 5 state: { obj: audio } 6});
jsx
1console.log(audio); 2history.push({ 3 pathname: "/next", 4 state: { obj: "audio" } 5});
そのほかnumberやbooleanも遷移し渡すことができました。
しかし、new Audio()
で生成される<audio preload="auto" loop=""></audio>
は遷移できず、渡せずでした。
あなたの回答
tips
プレビュー