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

vue emit dispatch

錢艷冰2年前8瀏覽0評論

Vue.js 是一款流行的 JavaScript 框架,它為我們提供了許多強大的功能。其中一個非常有用的功能是事件機制。Vue 提供了一種簡單的方式,讓父組件和子組件直接通信。這個功能就是 emit/dispatch。

在子組件調用 emit 函數時,這個函數會向父組件發送一個事件。可以攜帶任意數量的參數。父組件會監聽同名的事件,并在事件觸發后執行對應的方法。

// 子組件中調用 emit 函數
this.$emit('foo', 'bar', 123);
// 父組件監聽事件
<ChildComponent v-on:foo="handleFoo"></ChildComponent>
// 父組件中定義 handleFoo 方法
methods: {
handleFoo: function(arg1, arg2) {
console.log(arg1); // 'bar'
console.log(arg2); // 123
}
}

這樣,子組件就可以向父組件傳遞數據,而不需要直接修改父組件的數據。這也是一個好的實踐方式,因為它讓代碼更加清晰和可維護。

除了向父組件發送事件,emit 還可以向當前組件自身發送事件。這種方式比較少用,但也可以用來簡化代碼邏輯。

// 組件向自身發送事件
this.$emit('foo');

dispatch 和 emit 的區別在于 dispatch 主要用于向父級組件發送事件。dispatch 函數接收兩個參數,第一個參數是事件名稱,第二個參數是要攜帶的數據。

// 發送事件
this.$parent.$emit('foo', 'bar');
// 監聽事件
methods: {
handleFoo: function(data) {
console.log(data); // 'bar'
}
},
mounted: function() {
// 監聽父組件事件
this.$parent.$on('foo', this.handleFoo)
},
beforeDestroy: function() {
// 移除監聽器
this.$parent.$off('foo', this.handleFoo)
}

這樣,我們就可以在任何一個子組件中,向父組件發送事件和數據,實現組件之間的通信。