Quantcast
Channel: Active questions tagged youtube-api - Stack Overflow
Viewing all articles
Browse latest Browse all 3638

React: Why isn't the YouTube player state rendering?

$
0
0

I'm currently working on a personal project to embed a YouTube video and render the current state of the video player on the page using a YouTube API call to getPlayerState(). Here's the code I have right now, and my logic was that I could update playerState depending on what the getPlayerState function returns.

Here's the API function: https://developers.google.com/youtube/iframe_api_reference#Playback_status.

However, the playerState that comes up on the page never updates. It just always stays at Unstarted, which is what I initialized to, even after the video starts playing.

Would someone mind explaining what error I might be encountering, and a possible fix? I've looked at this for a long time and can't quite figure out why this is. Thank you so much!

import React from 'react';import ReactPlayer from "react-player"class VideoPlayer extends React.Component {    constructor(props) {        super(props);        this.state = {            playerState: "Unstarted",            youtubeIsClicked: false,        };    }    handleVideoPlayerState = (e) => {        this.currentVideoPlayerState(e);    }    currentVideoPlayerState = async (e) => {        let [currentPlayerState] = await Promise.all([            e.target.getPlayerState()        ]);        switch (currentPlayerState) {            case -1:                console.log('onPlayerStateChange', currentPlayerState);                this.setState({ playerState: "Unstarted" })                break;            case 0:                console.log('onPlayerStateChange', currentPlayerState);                this.setState({ playerState: "Ended" })                break;            case 1:                console.log('onPlayerStateChange', currentPlayerState);                this.setState({ playerState: "Playing" })                break;            case 2:                console.log('onPlayerStateChange', currentPlayerState);                this.setState({ playerState: "Paused" })                break;            case 3:                console.log('onPlayerStateChange', currentPlayerState);                this.setState({ playerState: "Buffering" })                break;            case 5:                console.log('onPlayerStateChange', currentPlayerState);                this.setState({ playerState: "Video cued" })                break;        }    }    handleYouTubeClick = () => {        this.setState({            youtubeIsClicked: true,        });    }    render() {        return (<div style={{ width: "80%", margin: "0 auto" }}><h1>Video Player</h1><button onClick={this.handleYouTubeClick}>Youtube</button>                {this.state.youtubeIsClicked && (<div><ReactPlayer                            url="https://youtu.be/2XsP4I9ds4c"                            playerState={this.state.playerState}                            onPlayerStateChange={this.handleVideoPlayerState}                        /><p>Playback State: {this.state.playerState}</p></div>                )}</div>        );    }}export default YouTubePlayer

Viewing all articles
Browse latest Browse all 3638

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>