@photosho

Как в Vue решается вопрос глобального контроля состояния компонентов?

Допустим, есть компонент "музыкальный плеер", воспроизводящий одну музыку и выводящий разметку плеера для управления воспроизведением. Есть, также, компонент-обёртка, в который передаётся массив объектов с параметрами плеера, и он в цикле "v-for" выводит на странице первый компонент. Этот родительский компонент следит за тем, чтобы внутри него два плеера не работали одновременно: хранит в себе индекс текущего плеера и по событию "play" из "$emit" останавливает его воспроизведение и даёт возможность воспроизводить другому.

Если вызвать компонент плеера в другом месте страницы без обёртки (или со своим компонентом-обёрткой), то этот контроль над воспроизведением будет потерян, и два плеера смогут воспроизводиться одновременно, так как нет общего глобального контроллера их состояния.

Как такие проблемы решаются в Vue?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Как всегда стоит посмотреть документацию, прокрутите ниже и увидите рекомендуемые либы.

Паттерн шины событий можно использовать с помощью внешней библиотеки, реализующей интерфейс эмиттера событий, например mitt (opens new window)или tiny-emitter (opens new window).

Глобальное управление состоянием, например с помощью Vuex (opens new window).

https://v3.ru.vuejs.org/ru/guide/migration/events-...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы