ReactJS:如何使用react正确播放带有onClick事件的html5视频

ReactJS: How can I play an html5 video with an onClick event correctly with react?

本文关键字:onClick 事件 视频 html5 播放 何使用 react ReactJS      更新时间:2023-09-26

在我的react组件中,我有一个视频标签,如下所示:

  <video>
    <source src="https://fake.com/file.mp4" type="video/mp4" />
  </video>

我有一个按钮再往下一点,我想用它来激活视频:

<button onClick={playVideoFunc?}/>

我想我会使用某种点击事件来触发视频播放,我知道我可以使用以下javascript代码来完成:

var v = document.getElementsByTagName("video")[0];
v.play();

但感觉这是我第一次使用react,我想知道是否有更"react"的方法?此外,如果我必须使用像上面这样的纯javascript,那么将代码放入react组件本身是否合适?作为参考,我的组件如下(减去一些细节):

import React, { Component } from 'react';
import Footer from './footerComponent'
import Navbar from './navbarComponent';

class Home extends React.Component{
  render() {
    return (
      <div className="wrapper home-page">
        <div className="jumbotron-video-wrapper">
          <video>
            <source src="https://fake.com/file.mp4" type="video/mp4" />
          </video>
        </div>
        <Navbar type={"transparent"}/>
        <div className="jumbotron margin-bottom-20" style={heroStyle}>
          <div className="container-fluid">
            <div className="row">
              <div className="col-md-8 col-md-offset-2 text-center">
                <h1>WORDS WORDS WORDS</h1>
                <img onClick={playvideo??} width="130" src={playImage}/>
                <p className="thin">Watch our video</p>
              </div>
            </div>
          </div>
        </div>
        <Footer/>
      </div>
    )
  }
};
export default Home;

您可以为视频元素分配一个ref,并使用this.refs.video.play()调用play().

class Home extends React.Component{
  render() {
    return (
      <div className="wrapper home-page">
        <div className="jumbotron-video-wrapper">
          <video ref="video">
            <source src="https://fake.com/file.mp4" type="video/mp4" />
          </video>
        </div>
        <Navbar type={"transparent"}/>
        <div className="jumbotron margin-bottom-20" style={heroStyle}>
          <div className="container-fluid">
            <div className="row">
              <div className="col-md-8 col-md-offset-2 text-center">
                <h1>WORDS WORDS WORDS</h1>
                <img onClick={() => {this.refs.video.play()}} width="130" src={playImage}/>
                <p className="thin">Watch our video</p>
              </div>
            </div>
          </div>
        </div>
        <Footer/>
      </div>
    )
  }
};

您也可以对视频元素执行onClick={e=>e.target.play()}。希望这对有帮助

您可以使用useRef挂钩来引用视频。然后在onClick功能中,您可以播放视频。你可以这样做。

";视频";在图像中是视频标签的样式化组件。FYI

在此处输入图像描述