Youtube - 是否可以从状态传递自动播放值的值(React JS)
Youtube - Is it possible to pass a value from state for the autoplay value (React JS)
我的一个要求是在观看时自动播放 youtube 视频,但是,似乎 onPlayerReady() 函数没有及时收到道具,所以总是默认为 false。我尝试了多种不同的方法,例如在 useEffect 中听取该值并尝试重新渲染视频,但没有任何成功。
有没有人遇到过类似的问题?或者我需要连接到不同的事件来更新吗?
我将附上一些示例代码以供视觉参考,如果需要添加更多代码来帮助解决问题,请告诉我!
const initPlayer = new YT.Player(videoId, {
height,
width,
videoId: youtubeId,
frameborder: '0',
playerVars: {
modestbranding: 1,
rel: 0,
controls: 0
mute: 1
autoplay: autoplayWhenInView ? 1 : 0 // Would like to use this value which is passed from a parent component
},
events: {
'onReady': onPlayerReady, // autoplayWhenInView is false when it's actually true
'onStateChange': onPlayerStateChange || {},
}
});
您可以包装整个组件,然后仅在视图中渲染它,然后 autoplay
将始终设置为 true
。
否则,您需要以编程方式触发播放器实例上的 play 方法,因为它已经创建并且 autoplay
仅用于初始初始化而不是反应式。
根据上面的评论,我通过在视图中有条件地呈现我的视频组件来解决这个问题。
我的一个要求是在观看时自动播放 youtube 视频,但是,似乎 onPlayerReady() 函数没有及时收到道具,所以总是默认为 false。我尝试了多种不同的方法,例如在 useEffect 中听取该值并尝试重新渲染视频,但没有任何成功。
有没有人遇到过类似的问题?或者我需要连接到不同的事件来更新吗?
我将附上一些示例代码以供视觉参考,如果需要添加更多代码来帮助解决问题,请告诉我!
const initPlayer = new YT.Player(videoId, {
height,
width,
videoId: youtubeId,
frameborder: '0',
playerVars: {
modestbranding: 1,
rel: 0,
controls: 0
mute: 1
autoplay: autoplayWhenInView ? 1 : 0 // Would like to use this value which is passed from a parent component
},
events: {
'onReady': onPlayerReady, // autoplayWhenInView is false when it's actually true
'onStateChange': onPlayerStateChange || {},
}
});
您可以包装整个组件,然后仅在视图中渲染它,然后 autoplay
将始终设置为 true
。
否则,您需要以编程方式触发播放器实例上的 play 方法,因为它已经创建并且 autoplay
仅用于初始初始化而不是反应式。
根据上面的评论,我通过在视图中有条件地呈现我的视频组件来解决这个问题。