Vue 3:如何发出带有多个参数的事件?

Chr*_*ris 7 javascript vue.js

注 A:这对某些人来说可能听起来像是重复的,但到目前为止我发现的所有其他问题要么涉及 Vue 2,要么涉及没有参数的事件。如果我错了,请纠正我。

注 B:这个问题可能看起来像功能请求,但事实并非如此。我刚开始使用Vue,不知道如何正确解决这个问题。

我的组件位于App.vue下两层。它运行这段代码:

this.$emit('my-event', parameter);
Run Code Online (Sandbox Code Playgroud)

App.vue(向上两级)使用以下代码捕获事件:

@my-event="myFunction"
Run Code Online (Sandbox Code Playgroud)

要使事件到达 App.vue,它首先必须经过自身上方的组件,如下所示:

子组件 > 父组件 > App.vue

父组件可以捕获该事件并将其传递给 App.vue,如下所示:

@my-event="$emit('my-event')"
Run Code Online (Sandbox Code Playgroud)

但随后该参数被省略。

解决这个问题的另一种方法是(在父组件内):

this.$emit('my-event', parameter);
Run Code Online (Sandbox Code Playgroud)

但我正在寻找一种更简单、更直观的方式来传递这个事件。也许是这样的(在父组件内):

@my-event="$emit('my-event', parameter)"
Run Code Online (Sandbox Code Playgroud)

这在 Vue 3 中可能吗?或者类似的东西?发出具有多个级别参数的事件的最佳方式是什么?任何帮助将不胜感激。

Mat*_*t J 9

Vue 提供了一个名为 的特殊变量$event,您可以在模板内使用它来获取事件参数。因此,在您的情况下,您可以将事件处理程序编写为

@my-event="$emit('my-event',$event)
Run Code Online (Sandbox Code Playgroud)