我将以下函数作为emits 传递给组件:

setTray(tray, pk) {
  alert(tray)
  alert(pk)
},

在组件内部调用时,我能够访问函数,但不能访问参数:

setup(props, ctx) {
  ctx.emit('setTray', 'profile-task', pk)
  ctx.emit('setTray', {tray: 'profile-task', pk: pk})
}

当执行setTray()时,这两种方法都会导致参数未定义.在这种情况下,正确的语法是什么?

推荐答案

emit函数接受一个或两个参数、事件名称和负载,在您的情况下,这些参数应定义为对象:

ctx.emit('setTray', {tray: 'profile-task', pk: pk})

在父项中:

setTray({tray, pk}) {//destruct the payload
  alert(tray)
  alert(pk)
},

或者以旧的方式:

setTray(payload) {
  alert(payload.tray)
  alert(payload.pk)
},

Vue.js相关问答推荐

vuejs:在确认提示之前更改 HTML

在哪里可以找到在线沙箱 Vuetify 3 模板来创建最小的可重现示例?

无法在cPanel/SSH上构建 | Laravel + Vue优化

Vue3 动态渲染

Vuetify 复选框:如何停止点击事件?

如何判断 Vue 组件是否处于活动状态

怎样1秒后自动隐藏VueJS中的元素

我在 Nuxt 2.14.0 中运行的是什么版本的 Vue?

为什么 v-model 不适用于数组和 v-for 循环?

Vue 组件中的组件渲染函数中可能存在无限更新循环警告

如何确定 Vue 何时完成更新 DOM?

为什么 Vue.js 使用 VDOM?

按键删除对象不会更新vue组件

将 SignalR 与 Vue.js 和 Vuex 集成

Vuejs css 范围性能

Bootstrap-vue:如何将数据传递给模态?

vuex 是 state.array.push react式的吗?

Axios 捕获错误请求失败,状态码 404

仅在提交时验证 vuetify 文本字段

Vue v-model 不响应 BS4 单选按钮组