淘先锋技术网

首页 1 2 3 4 5 6 7

Vue.js 是一个用于构建用户界面的渐进式框架,它提供了许多功能,其中之一是 emits,这是一个非常实用的功能,用于在组件之间进行通信。

emits 用于在子组件中向父组件通信,它定义了父组件期望从子组件发送的事件信息。子组件可以调用 $emit 方法来触发特定的事件,并传递参数。当事件被触发时,Vue.js 会调用父组件中相应的方法,从而完成组件间的通信。

下面是一个示例,演示了如何在子组件中使用 emits:

Vue.component('child', {
emits: ['increment'],
template: ``,
methods: {
onClick() {
this.$emit('increment', 1)
}
}
})
Vue.createApp({
data() {
return {
count: 0
}
},
methods: {
incrementHandler(val) {
this.count += val
}
}
}).mount('#app')

在这个示例中,父组件 app 定义了一个名为 count 的data属性,和一个名为 incrementHandler 的方法。它同时使用了子组件 child, 声明了 emits 属性,该属性是一个数组,包含了父组件期望从子组件发送的事件名称。子组件中定义了一个名为 onClick 的方法,该方法通过 $emit 方法触发了名为increment 事件,并传递了1个参数。因此,每次点击按钮时,incrementHandler 方法将被调用,count 属性将增加1。

emits 不仅可以定义简单的事件名称,还可以定义对象格式的事件名称,如下所示:

emits: {
increment: ({ step }) =>typeof step === 'number'
}

在这个示例中,increment 事件需要一个名为 step 的数字类型的参数。如果参数不是数字类型,Vue.js 会在开发环境中发出警告消息。