在Vue中,dispatch函數是一種將事件向上傳遞給父組件的方式。它類似于子組件使用emit函數向上傳遞事件,但是,只有一個組件知道自己的子組件是哪些,而每個子組件在自己的生命周期中即可能存在,又可能不存在。
而dispatch函數則不同,它是在子組件中調用其祖先組件中定義的函數,從而實現了事件的跨級傳遞。也就是說,我們可以通過dispatch函數來讓一個子組件的變化影響到其父組件或者更高級別的祖先組件。
// 父組件中定義事件處理函數
methods: {
parentFunction (params) {
console.log(params)
}
}
// 子組件中使用 dispatch 觸發父組件中的 parentFunction 函數
this.$parent.$emit('parentFunction', params)
// 父組件中使用 $on 監聽事件
在上面的代碼中,我們首先在父組件中定義了一個名為parentFunction的函數,在子組件中使用dispatch函數向父組件發起了一個parentFunction事件,并傳遞了一個params參數。最后,父組件中使用v-on指令監聽事件的名稱,并在事件觸發時執行相應的函數。
需要注意的是,dispatch函數只能向其祖先組件中定義的事件進行傳遞。如果要將事件向下傳遞,可以在子組件中使用$children,$refs等屬性,或者通過props傳遞組件間數據。