欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue 怎么傳遞event

夏志豪1年前9瀏覽0評論

在Vue中,我們可以使用$emit方法來傳遞一個自定義事件,$emit方法由根組件傳遞至子組件,子組件可以通過$on方法來監聽事件,實現父子組件之間的通信。

下面我們來看一段代碼來說明如何傳遞事件。首先,我們需要在根組件中定義一個$emit方法,如下:

Vue.prototype.$emit = function(event, ...args) {
const cbs = this._events[event];
if (cbs) {
cbs.forEach((cb) =>{
cb(...args);
});
}
}

上述代碼中,我們給Vue原型上定義了一個$emit方法,接收兩個參數,第一個是事件名稱,第二個則是事件的參數,使用了ES6的展開運算符來獲取并傳遞參數。我們調用$emit方法時,先獲取到該事件名稱對應的回調函數集合,然后循環執行這個回調函數集合中的每個回調函數,并將參數傳遞給它們。

接下來,在子組件中監聽事件,使用$on方法來定義一個回調函數,如下:

Vue.component('child', {
template: '',
methods: {
handleClick() {
this.$emit('custom-event', '參數1', '參數2');
}
}
});
new Vue({
el: '#app',
template: '',
methods: {
handleCustomEvent(param1, param2) {
console.log(`接收到了自定義事件,參數1是:${param1},參數2是:${param2}`);
}
}
});

上述代碼中,我們定義了一個子組件child,在這個組件中,我們通過@click事件來監聽click事件,并且在handleClick方法中,使用this.$emit來觸發自定義事件custom-event,傳遞了兩個參數。在父組件中,我們使用@custom-event事件來監聽這個子組件觸發的自定義事件,同時定義了一個回調函數handleCustomEvent來接收參數并打印到控制臺中。

當我們點擊子組件中的按鈕時,子組件將觸發自定義事件,傳遞了兩個參數,這個事件會被父組件監聽到,并且調用handleCustomEvent方法,并把子組件傳遞的參數打印出來,效果如下:

接收到了自定義事件,參數1是:參數1,參數2是:參數2

除了以上用法,我們還可以通過$once方法來監聽一次性事件,通過$off方法來取消事件監聽,通過$nextTick方法來等待DOM更新后再執行回調函數等一系列高級用法,Vue的事件傳遞機制非常強大且靈活,可以非常方便地實現組件之間的通信。