Vue兩個簡易代替vuex的方法(eventBus,observable)
阿新 • • 發佈:2021-07-12
當我們做一些小專案,沒必要用到vuex的時候,但是又要用類似vuex的功能,這個時候就可以用eventBus或者observable
一、先說一下eventBus
宣告一個全域性Vue例項變數 eventBus , 把所有的通訊資料,事件監聽都儲存到這個變數上
在main.js中:
Vue.prototype.$eventBus =new Vue()
然後在父元件裡面開始傳值:
methods:{
click(){
this.$eventBus.$emit('eventBus','你要幹啥')
}
}
子元件接收:
mounted:{
this.$eventBus.$on('eventBus',v=>{
console.log( 'eventBus',v)
})
}
二、再來看一下observable
Vue 內部會用它來處理 data 函式返回的物件; 返回的物件可以直接用於渲染函式和計算屬性內,並且會在發生改變時觸發相應的更新
新建立一個js檔案:
import Vue from 'vue'
export const store = Vue.observable({count:0})
export const mutations = {
setCount(count){
store.count = count
}
}
然後在元件中引入這個檔案:
import {store,mutations}
<button @click="setCount(count+1)">+</button>
<span>{{count}}</span>
<button @click="setCount(count-1)">-</button>
computed: {
count(){
return store.count
}
},
methods:{
setCount:mutations.setCount,
}