1. 程式人生 > 其它 >Vue兩個簡易代替vuex的方法(eventBus,observable)

Vue兩個簡易代替vuex的方法(eventBus,observable)

當我們做一些小專案,沒必要用到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, }