1
嘗試學習vuejs我遇到了如何使用$ emit但不使用任何@click將任何數據從一個組件傳遞到所有組件的問題。 有可能一些數據只是可用,並隨時抓住它,而不使用點擊?
假設我們有正常的@click和$ emit這個例子。
main.js
export const eventBus = new Vue()
Hello.vue
<template>
<div>
<h2>This is Hello component</h2>
<button
@click="emitGlobalClickEvent()">Click me</button>
</div>
</template>
<script>
import { eventBus } from '../main'
export default {
data() {
return {
msg: 'Welcome to Your Vue.js App'
}
},
methods: {
emitGlobalClickEvent() {
eventBus.$emit('messageSelected', this.msg)
}
}
}
</script>
User.vue
<template>
<div>
<h2>This is User component</h2>
<user-one></user-one>
</div>
</template>
<script>
import { eventBus } from '../main'
import UserOne from './UserOne.vue'
export default {
created() {
eventBus.$on('messageSelected', msg => {
console.log(msg)
})
},
components: {
UserOne
}
}
</script>
UserOne.vue
<template>
<div>
<h3>We are in UserOne component</h3>
</div>
</template>
<script>
import { eventBus } from '../main'
export default {
created() {
eventBus.$on('messageSelected', msg => {
console.log('From UserOne message !!!')
})
}
}
</script>
我想得到這樣的消息:如果可能,歡迎使用Hello.vue中的Vue.js應用程序在所有組件中使用,但不使用@click。
通過[道具](https://vuejs.org/v2/guide/components.html#Passing-Data-with-Props)向兒童提供數據的常用方法 –
只需使用Vuex。用數據創建vuex存儲,將其注入vue實例和所有組件中,您可以像這樣讀取這些數據。$ store - 不再需要道具。 – WaldemarIce