После некоторого тестирования я решил пойти с EventBus
. EventBus
позволяет отправлять / получать события между компонентами. Компоненты могут быть частью одного и того же родительского дерева или полностью другого. Больше информации здесь
Но в целом event-bus.js
файл должен быть создан
import Vue from 'vue';
export const EventBus = new Vue();
И затем импортируется в любой компонент, который будет использовать механизм EventBus
<script>
// Import the EventBus we just created.
import { EventBus } from './event-bus.js';
...
Затем из отправляющего компонента выдается событие
EventBus.$emit('i-got-clicked', this.clickCount);
Любой компонент, который загрузил EventBus
, может прослушивать такие события:
EventBus.$on('i-got-clicked', clickCount => {
console.log(`Oh, that's nice. It's gotten ${clickCount} clicks! :)`)
});
Чтобы прекратить прослушивать события:
EventBus.$off('i-got-clicked');
Лично я нахожу EventBus
довольно простым и полезным, но я, вероятно, буду использовать их только при разработке компонентов, которые будут включены в другие проекты. Для тех же компонентов проекта Vuex
более чем достаточно