Во-первых, лучший подход - думать о связях между вашими существующими компонентами и их связями. Так, например, если информация, которую вы пытаетесь передать, будет использоваться в прямом брате или далее по цепочке, вы можете выбрать props
.
Если вы имеете дело с двумя компонентами, которые не имеют прямой связи, кроме текущего состояния, вам нужно будет экстраполировать либо с использованием шаблона репозитория, либо Vuex (потоковая библиотека управления состояниями), где мы можем затем передать ссылку на состояние или в свойства в шаблоне репозитория.
FooRepository.js
export default class FooRepository {
SomeRef
ManyRef = []
addRef(name) {
this.someRef = name;
}
addRefs(names){
this.ManyRef.push(names);
}
}
Вышеприведенное может быть создано в вашем уровне приложений и совместно использоваться вашими компонентами с помощью свойства экземпляра https://vuejs.org/v2/cookbook/adding-instance-properties.html
В зависимости от размера ваших приложений, возможно, пришло время включить Vuex, где мы можем сохранить ссылку непосредственно в наше состояние и использовать ее аналогичным образом в качестве шаблона репо. Хотя, поскольку это официально поддерживаемый пакет, настройка и использование намного проще:
const store = new Vuex.Store({
state: {
ref: null
},
mutations: {
saveRef (state, compRef) {
state.ref = compRef
}
}
})
Это очень простое хранилище, которое показывает, как мы могли бы сохранить в нем ссылку, после чего мы можем получить доступ к этой ссылке в наших компонентах, как только зарегистрируем хранилище в main. Это можно сделать с помощью this.$store.state.ref
. Эти два подхода считаются лучшим подходом по сравнению с простыми простыми подпорками и чем-то вроде источника событий для компонентов, которые не имеют прямой связи.