shakdwipeea
shakdwipeea

Reputation: 795

Reactjs video onEnded event not firing

I have created a react component to play videos. The component is playing video just fine but the callback is not being fired.

class VideoPlayer extends React.Component {
  componentWillMount () {
      console.log('Mounting here');
  }

  changeThis () {
    console.log("Ended");
  }

  render () {
    var notice = this.props.notice;
    var p = "./data/video/" + notice.path + '?' + Math.random();
    return (
      <div key={notice.id}>
      <video className="image" alt={notice.description} onEnded={this.changeThis.bind(this)} controls autoPlay>
        <source src={p} type="video/mp4" />
        No suppoty
      </video>
      </div>
    )
  }
}

The onEnded function is not being called. What am I doing wrong.

Upvotes: 11

Views: 25170

Answers (2)

MarvinVK
MarvinVK

Reputation: 3083

Small tip for the next person that has the same problem as I did onEnded was not triggering because I had the loop attribute as well.

In my case I already had it on loop and then there is a play button. So I ended up with this:

const handlePlayPress = () => {
  vidRef.current.pause();
  vidRef.current.currentTime = 0;
  vidRef.current.muted = false;
  vidRef.current.loop = false;
  vidRef.current.play();
};

const handleVideoEnded = () => {
  console.log('Video ended!');
};

<video
  ref={vidRef}
  muted
  autoPlay
  loop
  onEnded={handleVideoEnded}>
    <source src="/videos/video.webm" type="video/webm" />
    <source src="/videos/video.mp4" type="video/mp4" />
    Your browser does not support the video tag.
</video>

Upvotes: 6

singh1469
singh1469

Reputation: 2044

ReactJS (0.14.0-rc1) now supports media events (video and audio): https://facebook.github.io/react/blog/2015/09/10/react-v0.14-rc1.html

I've tested onEnded and onTimeUpdate - works great!

Upvotes: 25

Related Questions