Для небольшого приложения, которому нужен только простой шаблон управления состоянием. Я всегда использую один компонент для хранения состояния приложения — контейнер. Это действует как единственный источник правды для приложения, чтобы ссылаться на свои состояния. Vue предоставляет механизм для создания глобального прослушивателя событий под названием EventBus, который является очень простым способом имитации потоковой архитектуры.

Все, что вам нужно, это один модуль, который экспортирует Vue как EventBus вот так

Затем вы можете использовать его внутри своего контейнера для listen события из любого компонента внутри приложения. Обычно я добавляю слушателя на created жизненный цикл.

Затем вы можете импортировать EventBus в любой из ваших компонентов, и вы можете запускать my-custom-event из любого места без необходимости emit события для родителя этого компонента и повторять весь процесс в каждом компоненте между компонентом, который инициирует изменение, и целевым контейнером.

Вот как может выглядеть CustomButton

Вот и все. По мере того, как ваше приложение становится больше, вы можете рассмотреть возможность использования Vuex, особенно если многие контейнеры имеют общие состояния.

Ваше здоровье!