HTML5ビデオ要素のソースタグを更新して、ボタンをクリックしたときに再生中のものが新しいビデオに切り替わるようにしたいとします。ReactでHTML5ビデオのソースURLを更新する
私はHTML5ビデオ要素を返すClipコンポーネントを持ち、ソースURLはpropsで提供されています。
function Clip(props) {
return (
<video width="320" height="240" controls autoPlay>
<source src={props.url} />
</video>
)
}
ムービーコンポーネントもあります。ムービーコンポーネントには、ムービーのセクションにそれぞれ対応する複数のURLが含まれています。また、現在再生中のセクションを記憶することによってイテレータのように機能するposition属性も含まれています。
class Movie extends Component {
constructor() {
super();
this.state = {
sections: [
'https://my-bucket.s3.amazonaws.com/vid1.mp4',
'https://my-bucket.s3.amazonaws.com/vid2.mp4'
],
position: 0
};
}
render() {
const sections = this.state.sections
const position = this.state.position
return (
<div>
{position}
<Clip url={sections[position]} />
<button onClick={() => this.updatePosition()}>Next</button>
</div>
)
}
updatePosition() {
const position = this.state.position + 1;
this.setState({ position: position });
}
}
ムービーコンポーネントは、クリップコンポーネントと「次へ」ボタンをレンダリングします。 [次へ]ボタンがクリックされると、位置属性を更新し、セクションの次のURLを使用してHTML5動画要素を再レンダリングします。
現在、「次へ」を押すと、HTML5ビデオソースタグが更新されますが、要素は前のURLから動画を再生し続けます。誰も私はビデオ要素をリセットする方法を把握するのに役立つことができますか?
更新:私はJSFiddleを作成しました。これはhereです。
更新2:ビデオ要素のsrc属性を更新すると機能します。
あなたはjsfiddleを提供することはできますか? –