Непонятно, как именно вы получаете объект Foo
, но, предполагая, что вы получаете его внутри mounted()
хука в App.vue
, вы можете отправить его компоненту Home
через хранилище Vuex:
Метод 1
Приложение. vue
mounted () {
this.foo = getFoo()
},
computed: {
foo: {
get () {
return this.$store.state.foo
},
set (value) {
// commit or dispatch the object to store
}
}
}
Дом. vue
<div>{{foo}}</div>
computed: {
foo () {
return this.$store.state.foo
}
}
Метод 2 - использование eventBus
Создайте файл с именем eventBus.js
:
eventBus. js
import Vue from 'vue'
export const eventBus = new Vue()
Импортируйте созданный eventBus в main.js
, куда вы импортируете Vue, и добавьте Vue прототип, если вы хотите сделать его доступным по всему миру:
Main. js
import { eventBus } from './eventBus'
Vue.prototype.$eventBus = eventBus
Приложение. vue
mounted () {
this.foo = getFoo()
// Send foo via event bus
this.$eventBus.$emit('transferFoo', this.foo)
}
Home . vue
<div>{{foo}}</div>
data () {
return {
foo: {}
}
},
mounted () {
this.$eventBus.$on('transferFoo', data => {
this.foo = data
})
}