Prevent playback state change loop on web
This commit is contained in:
parent
27880f5212
commit
e610a274d5
@ -127,6 +127,9 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
|||||||
setVolume(volume);
|
setVolume(volume);
|
||||||
}, [volume, setVolume]);
|
}, [volume, setVolume]);
|
||||||
|
|
||||||
|
// we use a ref to prevent triggerring the useEffect when the component rerender with a non-stable `onPlaybackStateChanged`.
|
||||||
|
const playbackStateRef = useRef(onPlaybackStateChanged);
|
||||||
|
playbackStateRef.current = onPlaybackStateChanged;
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Not sure about how to do this but we want to wait for nativeRef to be initialized
|
// Not sure about how to do this but we want to wait for nativeRef to be initialized
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@ -137,9 +140,9 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
|||||||
// Set play state to the player's value (if autoplay is denied)
|
// Set play state to the player's value (if autoplay is denied)
|
||||||
// This is useful if our UI is in a play state but autoplay got denied so
|
// This is useful if our UI is in a play state but autoplay got denied so
|
||||||
// the video is actaully in a paused state.
|
// the video is actaully in a paused state.
|
||||||
onPlaybackStateChanged?.({isPlaying: !nativeRef.current.paused});
|
playbackStateRef.current?.({isPlaying: !nativeRef.current.paused});
|
||||||
}, 500);
|
}, 500);
|
||||||
}, [onPlaybackStateChanged]);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!nativeRef.current || rate === undefined) {
|
if (!nativeRef.current || rate === undefined) {
|
||||||
|
Loading…
Reference in New Issue
Block a user