defining custom events Vue鼓励我们通过emits选项在组件上定义发出的事件时:

app.component('custom-form', {
  emits: ['inFocus', 'submit']
})

使用Vue 3的合成API,当独立合成函数发出自定义事件时,是否可以在合成函数中定义这些事件?

推荐答案

不,因为合成函数在setup钩子内部使用,而setup钩子无法访问其他选项,如methodsemits:

export default defineComponent({
    name: "layout",
    emits: ['showsidebar'],
    setup(props, { emit }) {
        const showSidebar = ref(true);
        const { breakpoints } = useBreakpoint();
        watch(breakpoints, (val) => {
            showSidebar.value = !(val.is === "xs" || val.is === "sm");
            emit('showsidebar',showSidebar.value);
        });
        return {
            showSidebar,
        };
    },
    data() {
        // ...
    },
});

在本例中,useBreakpoint只提供组件可以使用的一些逻辑.如果有一种方法可以在composition函数中定义emits选项,那么该函数将始终发出事件,即使该函数仅在定义发出事件的处理程序的组件中使用.

Vue.js相关问答推荐

如何在 VUE.js 中重新刷新时保持多层 b-collapse 菜单打开?

使用 cypress 进行 e2e 测试的 vuejs 期间出现 Webpack 错误

vue router/:param 斜杠的参数

使用 Vue.js 清除数组内容和react性问题

Vuetify grid layout - 如何填充网格中元素的高度

正确使用 Vue $refs

在 jest document.querySelector 中测试 vue 组件期间始终返回 null

我可以使用 vue.js v-if 来判断值是否存在于数组中

如何将 v-if 与 Vue.js 中的值进行比较

为什么我在 vue.js 中得到避免使用 JavaScript 一元运算符作为属性名称?

使用vue.js单击时如何获取按钮的值

如何在 Vue 中转发 $refs

Vuejs:我应该在 vue-router SPA 中的哪里放置一些常用的 js 工具?

Vue-i18n '无法读取 Proxy.Vue.$t 处未定义的属性 '_t'

Nuxt.js - API 调用的最佳场所

如何从 vue.js 捕获 Jquery 事件

beforeCreate 挂钩中的 Vue 2.1 调用方法不起作用

如何在 Vuetify DataTable 组件中设置初始每页行数值?

Vue js在列表中添加动态字段,删除和排序不起作用

vuejs 中缺少 webpack 配置