У меня есть компонент React, который визуализирует и управляет встроенным проигрывателем YouTube с помощью API Iframe YouTube. Родительский компонент управляет очередью видео и передает первый элемент в очереди проигрывателю для воспроизведения.
Как только заканчивается воспроизведение первого видео в очереди, метод handleStateChange()
вызывается, как и ожидалось, и я можно увидеть, что событие PlayerState.ENDED
было запущено. Затем я вызываю функцию обратного вызова onVideoEnd()
, чтобы уведомить родительский компонент о том, что он должен воспроизвести следующее видео в очереди.
Проблема, с которой я столкнулся, заключается в том, что когда второе видео ставится в очередь с помощью функции player.loadVideoById()
, оно запускает второе событие PlayerState.ENDED
. Это заставляет родителя удалить еще одно видео из очереди, фактически пропуская только что поставленное в очередь видео.
Кто-нибудь может увидеть очевидную причину, почему это происходит? Я проверил, что скрипт API загружается только один раз, поэтому я не думаю, что это проблема.
Вот коды и окно, демонстрирующее это поведение: https://codesandbox.io/s/fancy-smoke-8d7zj
Легче всего увидеть проблему в консоли, когда вы ставите в очередь 3 видео.
Заранее спасибо за любую помощь по этому вопросу.