我将以下函数作为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 通过数据键迭代复杂对象

如何使用 Vite 从公共目录导入 JSON 文件?

在 Ajax 函数中访问 Vue.js 组件属性

两个div元素之间的vue2过渡

如果找不到路由,Vue.js如何重定向到公共路由

VueJS CKeditor5 上传图片

使用 Laravel 作为后端刷新 Vue.js SPA 的身份验证令牌

Vuetify Datatable - 在所有列上启用内容编辑

如何在 vue.js 模板中显示空间而不是 undefined 和 null?

如何将 vue.js 与 gulp 一起使用?

如何创建 vuetify 工具栏链接下拉菜单?

如果我观看解构的props,Vue 3 手表将无法正常工作

Vuetify - 如何在 v-data-table 中单击时突出显示行

Vue更改宽度和内容

触发子函数

模块构建失败:错误:没有给出解析器和文件路径,无法在 nuxtjs 中推断出解析器

使用 Vue 在单个文件组件中调用渲染方法

从 vuex 存储访问 $vuetify 实例属性

vue-router 如何使用 hash 推送({name:"question"})?

在 Vuex 模块中进行继承的方法