溶液の1つは、HTML5 Audio
であることができる。 new Audio
オブジェクトを作成し、カスタムPlay
/Pause
ボタンで制御します。
Basicの例:
class Music extends React.Component {
constructor(props) {
super(props);
this.state = {
play: false,
pause: true,
}
this.url = "http://streaming.tdiradio.com:8000/house.mp3";
this.audio = new Audio(this.url);
}
play =() => {
this.setState({ play: true, pause: false })
this.audio.play();
}
pause =() => {
this.setState({ play: false, pause: true })
this.audio.pause();
}
render() {
return (
<div>
<button onClick={this.play}>Play</button>
<button onClick={this.pause}>Pause</button>
</div>
);
}
}
ReactDOM.render(
<Music />,
document.getElementById('container')
);
<div id="container"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
また、あなたがPlay
/Pause
を制御し、処理するためにaddEventListener
を使用することができます。
プレイ:
this.audio.addEventListener('play',() => {
this.setState({
play: true,
pause: false,
})
});
一時停止:
this.audio.addEventListener('pause',() => {
this.setState({
play: false,
pause: true,
})
});
ドキュメントと例:
Audio/Video Event Listener
MDN HTML5 Audio
重要な注意:
HTML5 Audio
要素がstop()
機能を持っていないので、一時停止後の音声は、()まだ(バックグラウンドでのバッファリング)をロードされます。
これが解決策です: HTML5 Video: Force abort of buffering
JSFIddle: https://jsfiddle.net/y2j0vzbe/
これが役立つことを願って。
ありがとうございます。しかし、 'play =()=> {'を持つ行で予期しないトークンエラーが発生します。何か案が? – Dawn17
そして私は '
' – Dawn17@ Dawn17をどこに追加するのも混乱しています。最初の問題については、これを見てください:https://stackoverflow.com/questions/31362292/how-to-use-arrow-functions-public-class-fields-クラスとしてのメソッド もう1つは反応文書をお読みください: https://reactjs.org/docs/rendering-elements.html#rendering-an-element-into-thedom –