Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
Usando react-youtube, ¿hay alguna forma de hacer referencia al jugador que no sea con un evento?

La documentación para la biblioteca de react-youtube es muy escasa y estoy tratando de hacer referencia al reproductor para usar las funciones pauseVideo() y playVideo() cuando cambia un valor externo. En los documentos oficiales de la API de YouTube, colocan al jugador en una var y hacen referencia a eso, pero los documentos de reacción de YouTube solo explican que el jugador se pasa como el valor objetivo para un evento. Entonces, ¿qué uso para hacer referencia al reproductor y usar su funcionalidad sin un evento?

Esto es para una aplicación tipo sala de chat con un reproductor de video sincronizado, a continuación se muestra el código para la función del reproductor de video. Incluido dentro hay un campo de texto para poner una URL y un botón para enviarlo a la sala. Actualmente estoy transmitiendo con éxito a la sala el nuevo estado del reproductor cuando cambia y me gustaría cambiar el estado de los reproductores para cada usuario en la sala cuando eso suceda, pero para hacerlo necesito hacer referencia al reproductor, que de nuevo estoy teniendo problemas con.

 import YouTube from "react-youtube"; function SyncPlayer({ code, setPlayerURL, sendCode, onPlayerStateChange, playerState} ) { useEffect(() => { if(playerState == 1){ youtubePlayer.playVideo();//not valid reference to player } }, [playerState]) const opts = { playerVars: { autoplay: 0 } }; return ( <div> <div> <input id="urlinput" type="text" placeholder="Video URL" onChange={(event) => setPlayerURL(event.target.value)}/> <button onClick={(event) => sendCode(event)}>submit</button> <div> <YouTube videoId={code} containerClassName="embed embed-youtube" opts={opts} onStateChange={onPlayerStateChange} /> </div> </div> </div> ); } export default SyncPlayer;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Ok, parece que lo descubrí.

Entonces, la función onReady del reproductor almacena el evento pasado en una variable global y la uso para hacer referencia al reproductor. Esto es lo que parece:

 import YouTube from "react-youtube"; var cElement = null; function SyncPlayer({ code, setPlayerURL, sendCode, onPlayerStateChange, playerState} ) { useEffect(() => { if(cElement){ var player = cElement.target; if(playerState === 1){ player.playVideo(); } if(playerState === 2){ player.pauseVideo(); } } }, [playerState]); const storeEvent = event =>{ cElement = event; }; const opts = { playerVars: { autoplay: 0 } }; return ( <div> <div> <input id="urlinput" type="text" placeholder="Video URL" onChange={(event) => setPlayerURL(event.target.value)}/> <button onClick={(event) => sendCode(event)}>submit</button> <div> <YouTube videoId={code} containerClassName="embed embed-youtube" opts={opts} onStateChange={onPlayerStateChange} onReady={storeEvent} /> </div> </div> </div> ); } export default SyncPlayer;
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda