- Контекст
В моем приложении Svelte у меня есть несколько страниц, на каждой из которых отображается одно или несколько видеороликов. Для рендеринга видео я повторно использую видеокомпонент (упрощенный):
// video component
<video poster="{source.thumb}">
<source type="{source.mime}" src="{source.source}" >
</video>
главная страница получает видеоконтент через API и вызывает компонент видео:
// calling video component on main page
<script>
let source = {
thumb: 'thumb.jpg',
source: 'video.mp4',
mime: 'video/mp4',
};
</script>
<Video source={source} />
Все работает нормально, видео отображается и можно воспроизводить.
- Проблема
Но: когда я просматриваю видео или хочу заменить одно видео другим, старый элемент видео каким-то образом все еще существует, и воспроизведение продолжается.
Я мог бы использовать beforeUpdate()
, чтобы приостановить видео. Но затем новое видео странным образом загружается в одно и то же время воспроизведения, и все смешивается. Или, если я удалю элемент видео в beforeUpdate()
, он не будет заполнен новой информацией.
В этом есть смысл, потому что медиа-элемент video
остается неизменным, в то время как изменяются только атрибуты и контент. Таким образом сохраняется состояние и уже буферизованный источник.
Мне как-то нужно было бы заверить, что при изменении данных видеокомпонент должен быть полностью перемонтирован. Кто-нибудь знает, как это сделать? Спасибо!