【发布时间】:2017-05-09 06:02:49
【问题描述】:
我想更新 HTML5 视频元素中的源标签,这样当我单击按钮时,正在播放的内容都会切换到新视频。
我有一个 Clip 组件,它返回一个 HTML5 视频元素,源 URL 通过 props 提供。
function Clip(props) {
return (
<video width="320" height="240" controls autoPlay>
<source src={props.url} />
</video>
)
}
我还有一个 Movie 组件,它包含多个 URL,每个 URL 对应于电影的一部分。它还包含一个位置属性,它通过记住当前正在播放的部分来充当迭代器。
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 });
}
}
Movie 组件呈现一个 Clip 组件和一个“下一步”按钮。单击下一步按钮时,我想更新位置属性并使用部分中的下一个 URL 重新呈现 HTML5 视频元素。
截至目前,当我点击 Next 时,HTML5 视频源标签会更新,但该元素会继续播放上一个 URL 中的视频。谁能帮我弄清楚如何重置视频元素?
更新:我创建了一个 JSFiddle,你可以看到 here。
更新 2: 更新视频元素的 src 属性有效!
【问题讨论】:
-
你能提供一个jsfiddle吗?
标签: javascript html reactjs video